Merged PR 2274: case deadline and watch stream on results

case deadline and wat

Related work items: #22423, #22783
This commit is contained in:
Robert Bond
2026-04-27 13:07:46 +00:00
parent 138f03912b
commit b2945790b1
13 changed files with 172 additions and 11 deletions
+3 -1
View File
@@ -222,7 +222,9 @@ const EventsDetails = (props) => {
target="_blank"
rel="noopener noreferrer"
>
Watch live stream
{t(
"case:live-event-link"
)}
</a>
</div>
)}
+3 -3
View File
@@ -379,12 +379,12 @@ const CaseSummary = (props) => {
className="govuk-notification-banner__title"
id="live-event-title"
>
Live event
{t("case:live-event-subheading")}
</h2>
</div>
<div className="govuk-notification-banner__content">
<p className="govuk-notification-banner__heading">
A live streamed event is happening now.
{t("case:live-event-copy")}
</p>
{livePublishedEvent.pinswg_eventname && (
@@ -401,7 +401,7 @@ const CaseSummary = (props) => {
target="_blank"
rel="noopener noreferrer"
>
Watch live stream
{t("case:live-event-link")}
</a>
</div>
</div>
@@ -29,6 +29,17 @@ const Pinswg_sipscase = (props) => {
);
}
const extensions =
detailsObj.pinswg_CaseDeadlineExtension_pinswg_sips || [];
const latest = extensions.sort(
(a, b) =>
new Date(b.pinswg_datedeadlineextended) -
new Date(a.pinswg_datedeadlineextended)
)[0];
console.log(latest);
return (
<>
{detailsObj.pinswg_projectdescription != null ? (
@@ -485,7 +496,48 @@ const Pinswg_sipscase = (props) => {
<h3 className="govuk-heading-m govuk-!-margin-bottom-7">
{t("case:summary-dates-label")}
</h3>
<h4 className="govuk-heading-s ">
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow
label={"Case deadline"}
value={(() => {
const fallback = t(
"case:summary-awaiting-information-label"
);
const extensions =
detailsObj.pinswg_CaseDeadlineExtension_pinswg_sips ||
[];
const latestExtension =
extensions
.filter(
(extension) =>
!_.isEmpty(
extension.pinswg_datedeadlineextended
)
)
.sort(
(a, b) =>
new Date(
b.pinswg_datedeadlineextended
) -
new Date(
a.pinswg_datedeadlineextended
)
)[0];
const dateToDisplay =
latestExtension
? latestExtension.pinswg_datedeadlineextended
: detailsObj.pinswg_casedeadline;
return !_.isEmpty(dateToDisplay)
? formatDates(dateToDisplay)
: fallback;
})()}
/>
</dl>
<h4 className="govuk-heading-s">
{t(
"case:summary-pre-submission-sub-title"
)}
@@ -30,6 +30,7 @@ import {
getWatchedCasesProxy
} from "../../actions/services/portalService";
import RepsOnResults from "./repsonresults";
import LiveLink from "./liveLink";
const escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -394,6 +395,12 @@ const SearchResults = (props) => {
<RepsOnResults
detailsObj={detailsObj}
/>
<LiveLink
detailsObj={detailsObj}
appealType={
item.pinswg_appealcasetype
}
/>
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
+7
View File
@@ -8,6 +8,7 @@ import { connect } from "react-redux";
import transLookup from "../../data/lookuptranslations.json";
import PaginationControl from "./pagination";
import RepsOnResults from "./repsonresults";
import LiveLink from "./liveLink";
import {
getBasicDNSSearchPaged,
@@ -468,6 +469,12 @@ const DNSSearchResults = (props) => {
item.pinswg_appealcasetype
}
/>
<LiveLink
detailsObj={detailsObj}
appealType={
item.pinswg_appealcasetype
}
/>
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
+45
View File
@@ -0,0 +1,45 @@
import Link from "next/link";
import useTranslation from "next-translate/useTranslation";
const isSameDay = (dateA, dateB) =>
dateA.getFullYear() === dateB.getFullYear() &&
dateA.getMonth() === dateB.getMonth() &&
dateA.getDate() === dateB.getDate();
const getLiveEvent = (detailsObj) => {
const events = detailsObj?.pinswg_sips_pinswg_sipsevent || [];
if (!Array.isArray(events) || events.length === 0) return null;
const now = new Date();
return events.find((event) => {
if (!event?.pinswg_dateeventrequested) return false;
const eventDate = new Date(event.pinswg_dateeventrequested);
return isSameDay(eventDate, now);
});
};
const LiveLink = ({ detailsObj }) => {
let { t } = useTranslation();
const liveEvent = getLiveEvent(detailsObj);
if (!liveEvent || !liveEvent.pinswg_linktotheevent) return null;
return (
<div className="govuk-!-margin-top-3">
<a
href={liveEvent.pinswg_linktotheevent}
className="govuk-link"
target="_blank"
rel="noopener noreferrer"
>
{t("case:live-event-link")}
</a>
</div>
);
};
export default LiveLink;
+7
View File
@@ -39,6 +39,7 @@ import {
import { sendGAEvent } from "@next/third-parties/google";
import RepsOnResults from "./repsonresults";
import LiveLink from "./liveLink";
import { query } from "jsonpath";
const escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -478,6 +479,12 @@ const SearchResults = (props) => {
item.pinswg_appealcasetype
}
/>
<LiveLink
detailsObj={detailsObj}
appealType={
item.pinswg_appealcasetype
}
/>
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">