Skip to content

Commit

Permalink
ungå mangler tilgang ved å ikke sette før vi er ferdig lastet
Browse files Browse the repository at this point in the history
useSWR har ikke noen god måte å skille på at man retry og at man er ferdig så vidt jeg kan se.
  • Loading branch information
kenglxn committed Oct 5, 2023
1 parent 6899685 commit c1e5fb3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 9 deletions.
6 changes: 5 additions & 1 deletion src/App/OrganisasjonerOgTilgangerProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -203,13 +203,17 @@ export const OrganisasjonerOgTilgangerProvider: FunctionComponent = (props) => {
}, []);
const userInfo = useUserInfo();
useEffect(() => {
if (!userInfo.loaded) {
// ikke set organisasjoner og tilganger før de er lastet
return;
}
if (userInfo.altinnError) {
addAlert('TilgangerAltinn');
setVisFeilmelding(true);
}
setAltinnorganisasjoner(userInfo.organisasjoner);
setAltinntilganger(userInfo.tilganger);
}, [userInfo.altinnError, userInfo.organisasjoner, userInfo.tilganger]);
}, [JSON.stringify(userInfo)]);

const beregnOrganisasjonerArgs = [
altinnorganisasjoner,
Expand Down
20 changes: 12 additions & 8 deletions src/App/useUserInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import { Organisasjon } from '../altinn/organisasjon';
import { altinntjeneste, AltinntjenesteId } from '../altinn/tjenester';
import * as Record from '../utils/Record';
import { Set } from 'immutable';
import { useState } from 'react';

const UserInfoRespons = z.object({
loaded: z.boolean(),
altinnError: z.boolean(),
organisasjoner: z.array(Organisasjon),
tilganger: z
Expand All @@ -22,13 +24,9 @@ const UserInfoRespons = z.object({
Record.fromEntries(tilganger.map((it) => [it.id, Set(it.organisasjoner)]))
),
});
const fallbackData = {
altinnError: false,
organisasjoner: [],
tilganger: Record.map(altinntjeneste, () => Set<string>()),
};
type UserInfo = z.infer<typeof UserInfoRespons>;
export const useUserInfo = (): UserInfo => {
const [exhausted, setExhausted] = useState(false);
const { data, error } = useSWR('/min-side-arbeidsgiver/api/userInfo/v1', fetcher, {
onErrorRetry: (error, key, config, revalidate, { retryCount }) => {
if ((error.status === 502 || error.status === 503) && retryCount <= 5) {
Expand All @@ -39,12 +37,18 @@ export const useUserInfo = (): UserInfo => {
error.status !== undefined ? `${error.status} ${error.statusText}` : error
}`
);
setExhausted(true);
}
},
fallbackData,
});

return data ?? { ...fallbackData, altinnError: error !== undefined };
return {
...(data ?? {
organisasjoner: [],
tilganger: Record.map(altinntjeneste, () => Set<string>()),
}),
altinnError: data?.altinnError ?? error !== undefined,
loaded: data?.loaded ?? exhausted,
};
};

const fetcher = async (url: string) => {
Expand Down

0 comments on commit c1e5fb3

Please sign in to comment.