From 9f19ee237d7f3cd83060debe7addf04ef40e40b5 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Aug 2026 10:46:24 +0100 Subject: [PATCH 1/2] fix: unitId is now set for sensitive cms with default homeUnit --- .../case-registration/case-assignee/index.tsx | 11 +++- .../case-details-page/index.tsx | 14 ++++- .../first-hearing-page/index.tsx | 11 +++- .../components/case-registration/index.tsx | 52 +++++++++++++------ 4 files changed, 68 insertions(+), 20 deletions(-) diff --git a/src/ui-spa/src/components/case-registration/case-assignee/index.tsx b/src/ui-spa/src/components/case-registration/case-assignee/index.tsx index ebe99801..a4eca9e2 100644 --- a/src/ui-spa/src/components/case-registration/case-assignee/index.tsx +++ b/src/ui-spa/src/components/case-registration/case-assignee/index.tsx @@ -82,8 +82,15 @@ const CaseAssigneePage = () => { }); const registeringUnitId = useMemo(() => { - return state.formData.registeringUnitText?.id; - }, [state.formData.registeringUnitText]); + return ( + state.formData.registeringUnitText?.id ?? + state.apiData.areasAndRegisteringUnits?.homeUnit?.id ?? + null + ); + }, [ + state.formData.registeringUnitText, + state.apiData.areasAndRegisteringUnits?.homeUnit?.id, + ]); const previousRoute = useMemo(() => { if (state.formData.navigation.fromCaseSummaryPage) { diff --git a/src/ui-spa/src/components/case-registration/case-details-page/index.tsx b/src/ui-spa/src/components/case-registration/case-details-page/index.tsx index 655f7268..67a48203 100644 --- a/src/ui-spa/src/components/case-registration/case-details-page/index.tsx +++ b/src/ui-spa/src/components/case-registration/case-details-page/index.tsx @@ -344,7 +344,19 @@ const CaseDetailsPage = () => { "registering-unit-text", ) as HTMLInputElement | null; const registeringUnitInputValue = registeringUnitInput?.value ?? ""; - if ( + if (isAreaSensitive) { + // Field is hidden; use stored value or fall back to home unit. + const homeUnit = state.apiData.areasAndRegisteringUnits?.homeUnit; + const registeringUnitText = state.formData.registeringUnitText.id + ? state.formData.registeringUnitText + : homeUnit + ? { id: homeUnit.id, description: homeUnit.description } + : state.formData.registeringUnitText; + formValue = { + ...formValue, + registeringUnitText, + }; + } else if ( formData.registeringUnitText?.description !== registeringUnitInputValue ) { const { id, description } = getSelectedUnit( diff --git a/src/ui-spa/src/components/case-registration/first-hearing-page/index.tsx b/src/ui-spa/src/components/case-registration/first-hearing-page/index.tsx index df715fe8..ca20f7c7 100644 --- a/src/ui-spa/src/components/case-registration/first-hearing-page/index.tsx +++ b/src/ui-spa/src/components/case-registration/first-hearing-page/index.tsx @@ -36,8 +36,15 @@ const FirstHearingPage = () => { }, [state.formData.navigation.fromCaseSummaryPage]); const registeringUnitId = useMemo(() => { - return state.formData.registeringUnitText?.id; - }, [state.formData.registeringUnitText]); + return ( + state.formData.registeringUnitText?.id ?? + state.apiData.areasAndRegisteringUnits?.homeUnit?.id ?? + null + ); + }, [ + state.formData.registeringUnitText, + state.apiData.areasAndRegisteringUnits?.homeUnit?.id, + ]); const [formData, setFormData] = useState<{ firstHearingRadio: string; diff --git a/src/ui-spa/src/components/case-registration/index.tsx b/src/ui-spa/src/components/case-registration/index.tsx index ef4d7417..1e672dda 100644 --- a/src/ui-spa/src/components/case-registration/index.tsx +++ b/src/ui-spa/src/components/case-registration/index.tsx @@ -181,26 +181,48 @@ const CaseRegistrationPage = () => { areasAndRegisteringUnits: areasData, }, }); + } + }, [areasData, dispatch, state.apiData.areasAndRegisteringUnits]); - if (!state.formData.areaOrDivisionText.id && areasData?.homeUnit) { - dispatch({ - type: "SET_FIELDS", - payload: { - data: { - areaOrDivisionText: { - id: areasData.homeUnit.areaId, - description: areasData.homeUnit.areaDescription, - }, + // Home unit must be re-applied after RESET_FORM_DATA (apiData is kept, form is cleared). + useEffect(() => { + const homeUnit = state.apiData.areasAndRegisteringUnits?.homeUnit; + if (!homeUnit) return; + + const needsArea = !state.formData.areaOrDivisionText.id; + const needsRegisteringUnit = !state.formData.registeringUnitText.id; + + if (!needsArea && !needsRegisteringUnit) return; + + // Always seed area from home unit when empty. For sensitive areas the RU + // field is hidden, so also seed registering unit whenever it is missing. + if (!needsArea && !homeUnit.areaIsSensitive) return; + + dispatch({ + type: "SET_FIELDS", + payload: { + data: { + ...(needsArea && { + areaOrDivisionText: { + id: homeUnit.areaId, + description: homeUnit.areaDescription, }, - }, - }); - } - } + }), + ...(needsRegisteringUnit && + (needsArea || homeUnit.areaIsSensitive) && { + registeringUnitText: { + id: homeUnit.id, + description: homeUnit.description, + }, + }), + }, + }, + }); }, [ - areasData, dispatch, - state.formData.areaOrDivisionText, state.apiData.areasAndRegisteringUnits, + state.formData.areaOrDivisionText.id, + state.formData.registeringUnitText.id, ]); useEffect(() => { From 2ca6c2a232e2f87ac967c7938cef2da7af528e90 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Aug 2026 11:04:51 +0100 Subject: [PATCH 2/2] integration test fixed --- .../components/case-registration/index.tsx | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/ui-spa/src/components/case-registration/index.tsx b/src/ui-spa/src/components/case-registration/index.tsx index 1e672dda..a5b8cbeb 100644 --- a/src/ui-spa/src/components/case-registration/index.tsx +++ b/src/ui-spa/src/components/case-registration/index.tsx @@ -190,14 +190,11 @@ const CaseRegistrationPage = () => { if (!homeUnit) return; const needsArea = !state.formData.areaOrDivisionText.id; - const needsRegisteringUnit = !state.formData.registeringUnitText.id; + const needsRegisteringUnit = + homeUnit.areaIsSensitive && !state.formData.registeringUnitText.id; if (!needsArea && !needsRegisteringUnit) return; - // Always seed area from home unit when empty. For sensitive areas the RU - // field is hidden, so also seed registering unit whenever it is missing. - if (!needsArea && !homeUnit.areaIsSensitive) return; - dispatch({ type: "SET_FIELDS", payload: { @@ -208,13 +205,13 @@ const CaseRegistrationPage = () => { description: homeUnit.areaDescription, }, }), - ...(needsRegisteringUnit && - (needsArea || homeUnit.areaIsSensitive) && { - registeringUnitText: { - id: homeUnit.id, - description: homeUnit.description, - }, - }), + // Only auto-set RU for sensitive areas (field is hidden there). + ...(needsRegisteringUnit && { + registeringUnitText: { + id: homeUnit.id, + description: homeUnit.description, + }, + }), }, }, });