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..a5b8cbeb 100644 --- a/src/ui-spa/src/components/case-registration/index.tsx +++ b/src/ui-spa/src/components/case-registration/index.tsx @@ -181,26 +181,45 @@ 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 = + homeUnit.areaIsSensitive && !state.formData.registeringUnitText.id; + + if (!needsArea && !needsRegisteringUnit) return; + + dispatch({ + type: "SET_FIELDS", + payload: { + data: { + ...(needsArea && { + areaOrDivisionText: { + id: homeUnit.areaId, + description: homeUnit.areaDescription, }, - }, - }); - } - } + }), + // Only auto-set RU for sensitive areas (field is hidden there). + ...(needsRegisteringUnit && { + registeringUnitText: { + id: homeUnit.id, + description: homeUnit.description, + }, + }), + }, + }, + }); }, [ - areasData, dispatch, - state.formData.areaOrDivisionText, state.apiData.areasAndRegisteringUnits, + state.formData.areaOrDivisionText.id, + state.formData.registeringUnitText.id, ]); useEffect(() => {