Skip to content

Commit 0639459

Browse files
committed
Flytte kode til appstatus-react-ds
1 parent 6c395d4 commit 0639459

File tree

12 files changed

+53
-76
lines changed

12 files changed

+53
-76
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

apps/dine-pleiepenger/e2e/playwright/utils/setup-mock-routes.ts

-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { Innsynsdata } from '../../../src/types/InnsynData';
33
import { søkerMockData } from '../mockdata/søker.mock';
44
import { søknaderMockData } from '../mockdata/søknader.mock';
55
import { PleietrengendeMedSak } from '../../../src/server/api-models/PleietrengendeMedSakSchema';
6-
import { defaultAppStatus } from '../../../src/pages/api/appStatus.api';
76

87
const sak: PleietrengendeMedSak = {
98
pleietrengende: {
@@ -31,7 +30,6 @@ export const setupMockRoutes = async (page: any) => {
3130
await page.route('**/innsynsdata', async (route) => {
3231
const response: Innsynsdata = {
3332
saker: [sak],
34-
appStatus: defaultAppStatus,
3533
harSak: true,
3634
søker: søkerMockData as any,
3735
mellomlagring: {},

apps/dine-pleiepenger/src/pages/_app.page.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ function MyApp({ Component, pageProps }: AppProps): ReactElement {
6767
<ErrorBoundary>
6868
<AmplitudeProvider applicationKey={InnsynPsbApp.key}>
6969
<main>
70-
{appStatus.message && (
70+
{appStatus?.message && (
7171
<div className="max-w-[1128px] mx-auto p-5 mb-5">
7272
<StatusMessage message={appStatus.message} />
7373
</div>

apps/dine-pleiepenger/src/pages/api/appStatus.api.ts

+3-57
Original file line numberDiff line numberDiff line change
@@ -2,72 +2,18 @@ import type { NextApiRequest, NextApiResponse } from 'next';
22
import { createChildLogger } from '@navikt/next-logger';
33
import { withAuthenticatedApi } from '../../auth/withAuthentication';
44
import { getXRequestId } from '../../utils/apiUtils';
5-
import { getAppSanityClient } from '@navikt/appstatus-react-ds/src/utils/sanityClient';
6-
import { SanityConfig } from '@navikt/appstatus-react-ds';
5+
import { SanityConfig, fetchStatus } from '@navikt/appstatus-react-ds';
76
import { browserEnv } from '../../utils/env';
87
import { APPLICATION_KEY } from '../_app.page';
9-
import { ApplicationStatus, Status } from '@navikt/appstatus-react-ds/src/types';
10-
import { SanityStatusMessage } from '@navikt/appstatus-react-ds/src/types/sanityObjects';
11-
import { getStateForApplication } from '@navikt/appstatus-react-ds/src/hooks/useAppStatus';
8+
import { ApplicationState } from '@navikt/appstatus-react-ds/src/hooks/useGetApplicationStatus';
129

1310
const sanityConfig: SanityConfig = {
1411
projectId: browserEnv.NEXT_PUBLIC_APPSTATUS_PROJECT_ID,
1512
dataset: browserEnv.NEXT_PUBLIC_APPSTATUS_DATASET,
1613
};
1714

18-
const getApplicationDocumentStatusQuery = (key: string, team?: string): string => {
19-
const teamQuery = team ? `team->.key == "${team}"` : '';
20-
return `*[_type == 'application' && key == "${key}"${teamQuery}]{
21-
key,
22-
applicationStatus,
23-
message,
24-
liveUpdate,
25-
name,
26-
team->{key}
27-
}`;
28-
};
29-
30-
const getTeamStatusQuery = (key: string): string => {
31-
return `*[_type == 'team' && key == "${key}"]{
32-
key,
33-
teamApplicationStatus,
34-
liveUpdate,
35-
message,
36-
}`;
37-
};
38-
39-
export interface ApplicationState {
40-
status: ApplicationStatus;
41-
message?: SanityStatusMessage;
42-
}
43-
44-
export const defaultAppStatus: ApplicationState = { status: Status.normal };
45-
4615
export const fetchAppStatus = async (): Promise<ApplicationState> => {
47-
const client = getAppSanityClient(sanityConfig);
48-
try {
49-
const [appResult, teamResult] = await Promise.allSettled([
50-
client.fetch(getApplicationDocumentStatusQuery(APPLICATION_KEY)),
51-
client.fetch(getTeamStatusQuery(APPLICATION_KEY)),
52-
]);
53-
54-
const app = appResult.status === 'fulfilled' && appResult.value.length === 1 ? appResult.value[0] : undefined;
55-
const team =
56-
teamResult.status === 'fulfilled' && teamResult.value.length === 1 ? teamResult.value[0] : undefined;
57-
58-
if (!app) {
59-
return defaultAppStatus;
60-
}
61-
62-
return getStateForApplication(
63-
app.applicationStatus.status,
64-
app.message ? app.message[0] : undefined,
65-
team?.teamApplicationStatus.status,
66-
team?.message ? team.message[0] : undefined,
67-
);
68-
} catch {
69-
return Promise.resolve(defaultAppStatus);
70-
}
16+
return await fetchStatus(APPLICATION_KEY, sanityConfig);
7117
};
7218

7319
async function handler(req: NextApiRequest, res: NextApiResponse) {

apps/dine-pleiepenger/src/pages/api/innsynsdata.api.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { Innsynsdata } from '../../types/InnsynData';
1414
import { getXRequestId } from '../../utils/apiUtils';
1515
import { Feature } from '../../utils/features';
1616
import { sortInnsendtSøknadEtterOpprettetDato } from '../../utils/innsendtSøknadUtils';
17-
import { defaultAppStatus, fetchAppStatus } from './appStatus.api';
17+
import { fetchAppStatus } from './appStatus.api';
1818

1919
export const innsynsdataFetcher = async (url: string): Promise<Innsynsdata> =>
2020
axios.get(url, { transformResponse: storageParser }).then((res) => res.data);
@@ -49,7 +49,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
4949

5050
const innsynsdata: Innsynsdata = {
5151
søker,
52-
appStatus: appStatus.status === 'fulfilled' ? appStatus.value : defaultAppStatus,
52+
appStatus: appStatus.status === 'fulfilled' ? appStatus.value : undefined,
5353
innsendteSøknader,
5454
mellomlagring: mellomlagringReq.status === 'fulfilled' ? mellomlagringReq.value : {},
5555
saksbehandlingstidUker:

apps/dine-pleiepenger/src/storybook/hooks/withInnsynsdata.tsx

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
import { InnsynsdataContextProvider } from '../../context/InnsynsdataContextProvider';
1+
import dayjs from 'dayjs';
2+
import mockSøker from '../../../api-mock-server/mockdata/soker.json';
23
import mockSøknader from '../../../api-mock-server/mockdata/soknader.json';
3-
import mockSøker from '../../../api-mock-server/mockdata/soknader.json';
4+
import { InnsynsdataContextProvider } from '../../context/InnsynsdataContextProvider';
45
import { Søker } from '../../server/api-models/SøkerSchema';
56
import { InnsendtSøknad } from '../../types/Søknad';
6-
import dayjs from 'dayjs';
7-
import { defaultAppStatus } from '../../pages/api/appStatus.api';
87

98
export const withInnsynsdata = (Story) => (
109
<InnsynsdataContextProvider
1110
innsynsdata={{
1211
saker: [{ saksbehandlingsFrist: dayjs().add(5, 'weeks').toDate() } as any],
13-
appStatus: defaultAppStatus,
12+
1413
harSak: true,
1514
søker: mockSøker as any as Søker,
1615
mellomlagring: {},

apps/dine-pleiepenger/src/types/InnsynData.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { ApplicationState } from '../pages/api/appStatus.api';
1+
import { ApplicationState } from '@navikt/appstatus-react-ds/src/hooks/useGetApplicationStatus';
22
import { PleietrengendeMedSak } from '../server/api-models/PleietrengendeMedSakSchema';
33
import { Søker } from '../server/api-models/SøkerSchema';
44
import { Mellomlagringer } from './Mellomlagring';
55
import { InnsendtSøknad } from './Søknad';
66

77
export interface Innsynsdata {
88
søker: Søker;
9-
appStatus: ApplicationState;
9+
appStatus?: ApplicationState;
1010
innsendteSøknader: InnsendtSøknad[];
1111
mellomlagring: Mellomlagringer;
1212
saker: PleietrengendeMedSak[];

packages/appstatus-react-ds/src/hooks/useAppStatus.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ interface State {
1111
error?: SanityError;
1212
}
1313

14-
const defaultState: State = {
14+
export const defaultAppStatus: State = {
1515
status: Status.normal,
1616
message: undefined,
1717
};
@@ -34,11 +34,11 @@ export const getStateForApplication = (
3434
message: appMessage || teamMessage,
3535
};
3636
}
37-
return defaultState;
37+
return defaultAppStatus;
3838
};
3939

4040
function useAppStatus(applicationKey: string, sanityConfig: SanityConfig): State & { isLoading: boolean } {
41-
const [state, setState] = useState<State>(defaultState);
41+
const [state, setState] = useState<State>(defaultAppStatus);
4242
const [config] = useState<SanityConfig>(sanityConfig);
4343

4444
const {

packages/appstatus-react-ds/src/hooks/useGetApplicationStatus.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { getMessage, sanityConfigIsValid } from '../utils';
55
import { getAppSanityClient } from '../utils/sanityClient';
66
import { usePrevious } from '@navikt/sif-common-hooks';
77

8-
const getApplicationDocumentStatusQuery = (key: string, team?: string): string => {
8+
export const getApplicationDocumentStatusQuery = (key: string, team?: string): string => {
99
const teamQuery = team ? `team->.key == "${team}"` : '';
1010
return `*[_type == 'application' && key == "${key}"${teamQuery}]{
1111
key,
@@ -31,7 +31,7 @@ export interface ApplicationSanityQueryResult {
3131
};
3232
}
3333

34-
interface ApplicationState {
34+
export interface ApplicationState {
3535
status: ApplicationStatus;
3636
message?: SanityStatusMessage;
3737
}

packages/appstatus-react-ds/src/hooks/useGetTeamStatus.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { SanityStatusMessage } from '../types/sanityObjects';
55
import { getMessage, sanityConfigIsValid } from '../utils';
66
import { getAppSanityClient } from '../utils/sanityClient';
77

8-
const getTeamStatusQuery = (key: string): string => {
8+
export const getTeamStatusQuery = (key: string): string => {
99
return `*[_type == 'team' && key == "${key}"]{
1010
key,
1111
teamApplicationStatus,
+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
export { default as useAppStatus } from './hooks/useAppStatus';
1+
export { default as useAppStatus, defaultAppStatus } from './hooks/useAppStatus';
22
export { default as StatusMessage } from './components/status-message/StatusMessage';
33
export { Status, type SanityConfig } from './types/index';
4+
export { fetchStatus } from './utils/fetchStatus';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { SanityConfig } from '..';
2+
import { defaultAppStatus, getStateForApplication } from '../hooks/useAppStatus';
3+
import { ApplicationState, getApplicationDocumentStatusQuery } from '../hooks/useGetApplicationStatus';
4+
import { getTeamStatusQuery } from '../hooks/useGetTeamStatus';
5+
import { getAppSanityClient } from './sanityClient';
6+
7+
export const fetchStatus = async (applicationKey: string, sanityConfig: SanityConfig): Promise<ApplicationState> => {
8+
const client = getAppSanityClient(sanityConfig);
9+
try {
10+
const [appResult, teamResult] = await Promise.allSettled([
11+
client.fetch(getApplicationDocumentStatusQuery(applicationKey)),
12+
client.fetch(getTeamStatusQuery(applicationKey)),
13+
]);
14+
15+
const app = appResult.status === 'fulfilled' && appResult.value.length === 1 ? appResult.value[0] : undefined;
16+
const team =
17+
teamResult.status === 'fulfilled' && teamResult.value.length === 1 ? teamResult.value[0] : undefined;
18+
19+
if (!app) {
20+
return defaultAppStatus;
21+
}
22+
23+
return getStateForApplication(
24+
app.applicationStatus.status,
25+
app.message ? app.message[0] : undefined,
26+
team?.teamApplicationStatus.status,
27+
team?.message ? team.message[0] : undefined,
28+
);
29+
} catch {
30+
return Promise.resolve(defaultAppStatus);
31+
}
32+
};

0 commit comments

Comments
 (0)