Skip to content

Commit

Permalink
Fix bug where ka query param was not honored
Browse files Browse the repository at this point in the history
  • Loading branch information
eriksson-daniel committed Feb 12, 2025
1 parent 4ce90e5 commit eb0a589
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 13 deletions.
5 changes: 3 additions & 2 deletions frontend/src/components/case/uinnlogget/session-loader.tsx
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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();

Expand Down
5 changes: 3 additions & 2 deletions frontend/src/hooks/use-session-klage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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];
Expand Down
3 changes: 2 additions & 1 deletion frontend/src/redux/session/klage/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export const createSessionCase = (
type: CaseType,
innsendingsytelse: Innsendingsytelse,
internalSaksnummer: string | null,
caseIsAtKA: true | null,
): ISessionCase => ({
id: getUniqueId(),
type,
Expand All @@ -26,5 +27,5 @@ export const createSessionCase = (
checkboxesSelected: [],
hasVedlegg: false,
modifiedByUser: new Date().toISOString(),
caseIsAtKA: null,
caseIsAtKA,
});
16 changes: 12 additions & 4 deletions frontend/src/redux/session/klage/reducers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const loadSessionCase: CaseReducer<State, PayloadAction<SessionCaseLoad>> = (sta
lastUpdated = 0;
sessionEvent(SessionAction.LOAD);

const { innsendingsytelse, type } = payload;
const { innsendingsytelse, type, data } = payload;

const sessionKey = getSessionCaseKey(type, innsendingsytelse);
const savedCase = readSessionCase(sessionKey);
Expand All @@ -63,7 +63,11 @@ const loadSessionCase: CaseReducer<State, PayloadAction<SessionCaseLoad>> = (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.
Expand All @@ -76,7 +80,7 @@ const loadOrCreateSessionCase: CaseReducer<State, PayloadAction<SessionCaseCreat
const savedCase = readSessionCase(sessionKey);

if (savedCase === undefined) {
const newCase = createSessionCase(type, data.innsendingsytelse, data.internalSaksnummer);
const newCase = createSessionCase(type, data.innsendingsytelse, data.internalSaksnummer, data.caseIsAtKA);

const key = saveSessionCase(innsendingsytelse, newCase);

Expand All @@ -89,7 +93,11 @@ const loadOrCreateSessionCase: CaseReducer<State, PayloadAction<SessionCaseCreat
sessionEvent(SessionAction.LOAD);
}

return setState(state, sessionKey, savedCase);
return setState(state, sessionKey, {
...savedCase,
internalSaksnummer: data.internalSaksnummer,
caseIsAtKA: data.caseIsAtKA === null ? savedCase.caseIsAtKA : data.caseIsAtKA,
});
};

const setState = (state: State, key: string, data: ISessionCase) => {
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/redux/session/klage/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
3 changes: 2 additions & 1 deletion frontend/src/routes/create-case/handlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export const handleSessionCase = ({
innsendingsytelse,
language,
internalSaksnummer,
caseIsAtKA,
navigate,
dispatch,
}: IHandleSession) => {
Expand All @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/routes/create-case/use-case.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit eb0a589

Please sign in to comment.