diff --git a/src/Pages/Saksoversikt/useOversiktSessionStorage.ts b/src/Pages/Saksoversikt/useOversiktSessionStorage.ts index 78db386dc..aadad3edf 100644 --- a/src/Pages/Saksoversikt/useOversiktSessionStorage.ts +++ b/src/Pages/Saksoversikt/useOversiktSessionStorage.ts @@ -9,6 +9,7 @@ import { OppgaveTilstand, SakSortering } from '../../api/graphql-types'; import { Set } from 'immutable'; import { Organisasjon } from '../../altinn/organisasjon'; import amplitude from '../../utils/amplitude'; +import { z } from 'zod'; const SESSION_STORAGE_KEY = 'saksoversiktfilter'; @@ -112,14 +113,30 @@ const defaultSessionState: SessionStateSaksoversikt = { valgtFilterId: undefined, }; +const FilterFromSessionState = z.object({ + route: z.literal('/saksoversikt'), + side: z.number(), + tekstsoek: z.string(), + virksomhetsnumre: z.union([z.array(z.string()), z.literal('ALLEBEDRIFTER')]), + sortering: z.nativeEnum(SakSortering), + sakstyper: z.array(z.string()), + oppgaveTilstand: z.array(z.nativeEnum(OppgaveTilstand)), + valgtFilterId: z.string(), +}); + export const useSessionStateOversikt = (alleVirksomheter: Organisasjon[]): UseSessionState => { const [sessionStorage, setSessionStorage] = useSessionStorage( SESSION_STORAGE_KEY, defaultSessionState ); - const [sessionState, setSessionState] = useState(() => - sessionStorage.route === '/saksoversikt' ? sessionStorage : defaultSessionState - ); + const [sessionState, setSessionState] = useState(() => { + try { + return FilterFromSessionState.parse(sessionStorage); + } catch (e) { + return defaultSessionState; + } + }); + useEffect(() => { setSessionStorage(sessionState); }, [sessionState]);