Skip to content

Commit 5ab93f9

Browse files
committed
FO-2916: Lagt inn prelansering info side
1 parent 9892df6 commit 5ab93f9

File tree

13 files changed

+108
-16
lines changed

13 files changed

+108
-16
lines changed

src/app.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ import StoreProvider from './stores/store-provider';
33
import { Header } from './components/header/header';
44
import { InternflateDecorator } from './components/internflate-decorator/internflate-decorator';
55
import { Hovedside } from './hovedside/hovedside';
6-
import { SokSync } from './components/sok-sync';
6+
import { PrelanseringSjekk } from './prelansering-side/prelansering-sjekk';
77

88
function App() {
99
return (
1010
<StoreProvider>
1111
<InternflateDecorator />
12-
<Header />
13-
<Hovedside />
14-
<SokSync />
12+
<PrelanseringSjekk>
13+
<Header />
14+
<Hovedside />
15+
</PrelanseringSjekk>
1516
</StoreProvider>
1617
);
1718
}

src/components/datafetcher.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { AlertStripeFeil } from 'nav-frontend-alertstriper';
55
import Spinner from './felles/spinner/spinner';
66

77
export function DataFetcher(props: { children: any }) {
8-
const { innloggetVeilederFetcher, aktivEnhetFetcher } = useDataFetcherStore();
8+
const { innloggetVeilederFetcher, aktivEnhetFetcher, featuresFetcher } = useDataFetcherStore();
99

1010
useEffect(() => {
1111
if (isNotStarted(innloggetVeilederFetcher)) {
@@ -15,13 +15,17 @@ export function DataFetcher(props: { children: any }) {
1515
if (isNotStarted(aktivEnhetFetcher)) {
1616
aktivEnhetFetcher.fetch(null);
1717
}
18+
19+
if (isNotStarted(featuresFetcher)) {
20+
featuresFetcher.fetch(null);
21+
}
1822
// eslint-disable-next-line react-hooks/exhaustive-deps
19-
}, [innloggetVeilederFetcher]);
23+
}, [innloggetVeilederFetcher, aktivEnhetFetcher, featuresFetcher]);
2024

2125
// Trenger ikke å sjekke om aktivEnhetFetcher er ferdig
22-
if (isAnyNotStartedOrPending([innloggetVeilederFetcher])) {
26+
if (isAnyNotStartedOrPending([innloggetVeilederFetcher, aktivEnhetFetcher, featuresFetcher])) {
2327
return <Spinner />;
24-
} else if (hasAnyFailed([innloggetVeilederFetcher])) {
28+
} else if (hasAnyFailed([innloggetVeilederFetcher, aktivEnhetFetcher, featuresFetcher])) {
2529
return (
2630
<AlertStripeFeil className="vedtaksstotte-alert">
2731
Det oppnås for tiden ikke kontakt med alle baksystemer.

src/components/sok-sync.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ function logSokMetrikker(sok: BeslutteroversiktSok, currentPage: number): void {
2626
}
2727

2828
export const SokSync = () => {
29-
const { brukereFetcher } = useDataFetcherStore();
30-
const { filters, currentPage, pageSize, orderByDirection, orderByField, seeAll, setTotalPages, setCurrentPage } = useSokStore();
29+
const { brukereFetcher, featuresFetcher } = useDataFetcherStore();
30+
const { filters, currentPage, pageSize, orderByDirection, orderByField, seeAll, setTotalPages, setCurrentPage, setFeatures } = useSokStore();
3131
const previousFilters = usePrevious(filters);
3232

3333
useEffect(() => {
@@ -52,5 +52,12 @@ export const SokSync = () => {
5252
// eslint-disable-next-line react-hooks/exhaustive-deps
5353
}, [brukereFetcher]);
5454

55+
useEffect(() => {
56+
if (hasFinishedWithData(featuresFetcher)) {
57+
setFeatures(featuresFetcher.data);
58+
}
59+
// eslint-disable-next-line react-hooks/exhaustive-deps
60+
}, [featuresFetcher.status]);
61+
5562
return null;
5663
};

src/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import React from 'react';
22
import ReactDOM from 'react-dom';
3+
import App from './app';
34
import env from './utils/environment';
45
import * as dayjs from 'dayjs';
56
import 'dayjs/locale/nb';
67
import './index.less';
7-
import { PrelanseringInfoSide } from './prelansering-side/prelansering-side';
88

99
dayjs.locale('nb');
1010

1111
if (env.isDevelopment) {
1212
require('./mock');
1313
}
1414

15-
ReactDOM.render(<PrelanseringInfoSide />, document.getElementById('root'));
15+
ReactDOM.render(<App />, document.getElementById('root'));

src/mock/data/features.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { JSONObject } from 'yet-another-fetch-mock';
2+
import { Features, PRELANSERING_INFO_OM_LOSNING_TOGGLE } from '../../rest/feature';
3+
4+
const features: Features & JSONObject = {
5+
[PRELANSERING_INFO_OM_LOSNING_TOGGLE]: true,
6+
};
7+
8+
export default features;

src/mock/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { mockBeslutteroversiktSok } from './sok-mock';
33
import { MODIACONTEXTHOLDER_API, VEILARBVEILEDER_API } from '../rest/api';
44
import { innloggetVeileder } from './data/innlogget-veileder';
55
import { aktivEnhet } from './data/aktiv-enhet';
6+
import features from './data/features';
67

78
export interface Mock {
89
url: string;
@@ -16,4 +17,5 @@ const fetchMock = FetchMock.configure({
1617

1718
fetchMock.post(mockBeslutteroversiktSok.url, mockBeslutteroversiktSok.handler);
1819
fetchMock.get(`${VEILARBVEILEDER_API}/veileder/v2/me`, innloggetVeileder as any);
19-
fetchMock.get(`${MODIACONTEXTHOLDER_API}/context/aktivenhet`, aktivEnhet as any);
20+
fetchMock.get(`${MODIACONTEXTHOLDER_API}/context/aktivenhet`, aktivEnhet as any);
21+
fetchMock.get('/veilarbpersonflatefs/api/feature', features);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import React, { PropsWithChildren, useEffect } from 'react';
2+
import { AlertStripeFeil } from 'nav-frontend-alertstriper';
3+
import { PRELANSERING_INFO_OM_LOSNING_TOGGLE } from '../rest/feature';
4+
import Spinner from '../components/felles/spinner/spinner';
5+
import env from '../utils/environment';
6+
import { Prelansering } from './prelansering';
7+
import { useDataFetcherStore } from '../stores/data-fetcher-store';
8+
import { hasAnyFailed, isAnyNotStartedOrPending, isNotStarted } from '../rest/utils';
9+
10+
11+
export function PrelanseringSjekk(props: PropsWithChildren<any>) {
12+
const { featuresFetcher } = useDataFetcherStore();
13+
14+
useEffect(() => {
15+
if (isNotStarted(featuresFetcher)) {
16+
featuresFetcher.fetch(null);
17+
}
18+
}, [featuresFetcher]);
19+
20+
if (isAnyNotStartedOrPending([featuresFetcher])) {
21+
return <Spinner />;
22+
} else if (hasAnyFailed([featuresFetcher])) {
23+
return (
24+
<AlertStripeFeil className="vedtaksstotte-alert">
25+
Det oppnås for tiden ikke kontakt med alle baksystemer.
26+
Vi jobber med å løse saken. Vennligst prøv igjen senere.
27+
</AlertStripeFeil>
28+
);
29+
}
30+
31+
return (featuresFetcher.data[PRELANSERING_INFO_OM_LOSNING_TOGGLE] && !env.isDevelopment) ? <Prelansering/> : props.children;
32+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import React from 'react';
2+
import { PrelanseringInfoSide } from './prelansering-side';
3+
import { PRELANSERING_INFO_OM_LOSNING_TOGGLE } from '../rest/feature';
4+
import { useSokStore } from '../stores/sok-store';
5+
6+
export function Prelansering() {
7+
const { features } = useSokStore();
8+
9+
return (
10+
<div>
11+
{features[PRELANSERING_INFO_OM_LOSNING_TOGGLE] && <PrelanseringInfoSide />}
12+
</div>
13+
);
14+
}

src/rest/api.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { FetchInfo } from './utils';
22
import { OrNothing } from '../utils/types/ornothing';
33
import { UtkastStatus } from './data/bruker';
4+
import { TOGGLES } from './feature';
45

56
export const VEILARBVEDTAKSSTOTTE_API = '/veilarbvedtaksstotte/api';
67
export const VEILARBVEILEDER_API = '/veilarbveileder/api';
78
export const MODIACONTEXTHOLDER_API = '/modiacontextholder/api';
9+
export const FEATURE_TOGGLE_URL = '/veilarbpersonflatefs/api/feature';
810

911
export interface BeslutteroversiktSok {
1012
fra: number;
@@ -38,6 +40,11 @@ export enum OrderByDirection {
3840
ASC, DESC
3941
}
4042

43+
export const lagHentFeaturesFetchInfo = (): FetchInfo => {
44+
const toggles = TOGGLES.map(element => 'feature=' + element).join('&');
45+
return { url: `${FEATURE_TOGGLE_URL}/?${toggles}` };
46+
};
47+
4148
export const lagHentBrukereFetchInfo = (params: { sok: BeslutteroversiktSok }): FetchInfo => ({
4249
url: `${VEILARBVEDTAKSSTOTTE_API}/beslutteroversikt/sok`,
4350
method: 'POST',

src/rest/feature.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export const PRELANSERING_INFO_OM_LOSNING_TOGGLE = 'beslutteroversikt.prelansering.info-om-losning';
2+
3+
4+
export const TOGGLES = [
5+
PRELANSERING_INFO_OM_LOSNING_TOGGLE,
6+
];
7+
8+
export interface Features {
9+
[PRELANSERING_INFO_OM_LOSNING_TOGGLE]: boolean;
10+
}

0 commit comments

Comments
 (0)