From eb0a58900b51c5557b784e761cda9dd6975f1be5 Mon Sep 17 00:00:00 2001 From: Daniel Eriksson Date: Wed, 12 Feb 2025 14:53:12 +0100 Subject: [PATCH] Fix bug where ka query param was not honored --- .../case/uinnlogget/session-loader.tsx | 5 +++-- frontend/src/hooks/use-session-klage.ts | 5 +++-- frontend/src/redux/session/klage/helpers.ts | 3 ++- frontend/src/redux/session/klage/reducers.ts | 16 ++++++++++++---- frontend/src/redux/session/klage/types.ts | 4 ++-- frontend/src/routes/create-case/handlers.ts | 3 ++- frontend/src/routes/create-case/use-case.ts | 2 +- 7 files changed, 25 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/case/uinnlogget/session-loader.tsx b/frontend/src/components/case/uinnlogget/session-loader.tsx index 388e1836..d0948345 100644 --- a/frontend/src/components/case/uinnlogget/session-loader.tsx +++ b/frontend/src/components/case/uinnlogget/session-loader.tsx @@ -1,4 +1,4 @@ -import { getQueryValue } from '@app/functions/get-query-value'; +import { getBooleanQueryValue, getQueryValue } from '@app/functions/get-query-value'; import { useSessionCase } from '@app/hooks/use-session-klage'; import { useIsAuthenticated } from '@app/hooks/use-user'; import type { Innsendingsytelse } from '@app/innsendingsytelser/innsendingsytelser'; @@ -19,7 +19,8 @@ export const KlageSessionLoader = ({ Component, innsendingsytelse, type }: Props const { isAuthenticated, isLoadingAuth } = useIsAuthenticated(); const [query] = useSearchParams(); const internalSaksnummer = getQueryValue(query.get('saksnummer')); - const [data, isLoading] = useSessionCase(type, innsendingsytelse, internalSaksnummer); + const caseIsAtKA = getBooleanQueryValue(query.get('ka')) ? true : null; + const [data, isLoading] = useSessionCase(type, innsendingsytelse, internalSaksnummer, caseIsAtKA); const { case_loader: klage_loader, user_loader } = useTranslation(); const language = useLanguage(); diff --git a/frontend/src/hooks/use-session-klage.ts b/frontend/src/hooks/use-session-klage.ts index b22b8849..e9b91f61 100644 --- a/frontend/src/hooks/use-session-klage.ts +++ b/frontend/src/hooks/use-session-klage.ts @@ -10,6 +10,7 @@ export const useSessionCase = ( type: CaseType, innsendingsytelse: Innsendingsytelse, internalSaksnummer: string | null, + caseIsAtKA: true | null, ): [ISessionCase, false] | [undefined, true] => { const dispatch = useAppDispatch(); const sessionCaseMap = useAppSelector((state) => state.session); @@ -25,11 +26,11 @@ export const useSessionCase = ( loadOrCreateSessionCase({ type, innsendingsytelse, - data: { innsendingsytelse, internalSaksnummer }, + data: { innsendingsytelse, internalSaksnummer, caseIsAtKA }, }), ); } - }, [dispatch, innsendingsytelse, internalSaksnummer, data, type]); + }, [dispatch, innsendingsytelse, internalSaksnummer, data, type, caseIsAtKA]); if (data === undefined) { return [undefined, true]; diff --git a/frontend/src/redux/session/klage/helpers.ts b/frontend/src/redux/session/klage/helpers.ts index 2e45fa32..e1b3d5a0 100644 --- a/frontend/src/redux/session/klage/helpers.ts +++ b/frontend/src/redux/session/klage/helpers.ts @@ -10,6 +10,7 @@ export const createSessionCase = ( type: CaseType, innsendingsytelse: Innsendingsytelse, internalSaksnummer: string | null, + caseIsAtKA: true | null, ): ISessionCase => ({ id: getUniqueId(), type, @@ -26,5 +27,5 @@ export const createSessionCase = ( checkboxesSelected: [], hasVedlegg: false, modifiedByUser: new Date().toISOString(), - caseIsAtKA: null, + caseIsAtKA, }); diff --git a/frontend/src/redux/session/klage/reducers.ts b/frontend/src/redux/session/klage/reducers.ts index 800e1b86..731be1cb 100644 --- a/frontend/src/redux/session/klage/reducers.ts +++ b/frontend/src/redux/session/klage/reducers.ts @@ -54,7 +54,7 @@ const loadSessionCase: CaseReducer> = (sta lastUpdated = 0; sessionEvent(SessionAction.LOAD); - const { innsendingsytelse, type } = payload; + const { innsendingsytelse, type, data } = payload; const sessionKey = getSessionCaseKey(type, innsendingsytelse); const savedCase = readSessionCase(sessionKey); @@ -63,7 +63,11 @@ const loadSessionCase: CaseReducer> = (sta return state; } - return setState(state, sessionKey, savedCase); + return setState(state, sessionKey, { + ...savedCase, + internalSaksnummer: data.internalSaksnummer, + caseIsAtKA: data.caseIsAtKA === null ? savedCase.caseIsAtKA : data.caseIsAtKA, + }); }; // Read from session storage if it exists, otherwise save to session storage. @@ -76,7 +80,7 @@ const loadOrCreateSessionCase: CaseReducer { diff --git a/frontend/src/redux/session/klage/types.ts b/frontend/src/redux/session/klage/types.ts index 02608694..459d79d7 100644 --- a/frontend/src/redux/session/klage/types.ts +++ b/frontend/src/redux/session/klage/types.ts @@ -8,11 +8,11 @@ interface Base { } export interface SessionCaseLoad extends Base { - data: { innsendingsytelse: Innsendingsytelse; internalSaksnummer: string | null }; + data: { innsendingsytelse: Innsendingsytelse; internalSaksnummer: string | null; caseIsAtKA: true | null }; } export interface SessionCaseCreate extends Base { - data: { innsendingsytelse: Innsendingsytelse; internalSaksnummer: string | null }; + data: { innsendingsytelse: Innsendingsytelse; internalSaksnummer: string | null; caseIsAtKA: true | null }; } export interface SessionCasePayload extends Base { diff --git a/frontend/src/routes/create-case/handlers.ts b/frontend/src/routes/create-case/handlers.ts index b45e79ca..90453fd0 100644 --- a/frontend/src/routes/create-case/handlers.ts +++ b/frontend/src/routes/create-case/handlers.ts @@ -31,6 +31,7 @@ export const handleSessionCase = ({ innsendingsytelse, language, internalSaksnummer, + caseIsAtKA, navigate, dispatch, }: IHandleSession) => { @@ -40,7 +41,7 @@ export const handleSessionCase = ({ setSessionCase({ type, innsendingsytelse, - data: createSessionCase(type, innsendingsytelse, internalSaksnummer), + data: createSessionCase(type, innsendingsytelse, internalSaksnummer, caseIsAtKA), }), ); } else if (internalSaksnummer !== null && internalSaksnummer !== sessionCase.internalSaksnummer) { diff --git a/frontend/src/routes/create-case/use-case.ts b/frontend/src/routes/create-case/use-case.ts index 562b37fe..bad2bbe3 100644 --- a/frontend/src/routes/create-case/use-case.ts +++ b/frontend/src/routes/create-case/use-case.ts @@ -32,7 +32,7 @@ export const useCase = (type: CaseType, innsendingsytelse: Innsendingsytelse): I const [resumeOrCreateCase, { isLoading: resumeIsLoading, isError: resumeHasFailed, isSuccess: resumeIsSuccess }] = useResumeOrCreateCaseMutation(); - const [sessionCase, sessionCaseIsLoading] = useSessionCase(type, innsendingsytelse, internalSaksnummer); + const [sessionCase, sessionCaseIsLoading] = useSessionCase(type, innsendingsytelse, internalSaksnummer, caseIsAtKA); const dispatch = useAppDispatch(); const isLoading = isLoadingUser || createIsLoading || resumeIsLoading;