Skip to content

Commit f4d0dc3

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

File tree

12 files changed

+113
-16
lines changed

12 files changed

+113
-16
lines changed

src/app.tsx

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,33 @@ 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 { DataFetcher } from './components/datafetcher';
7+
import { useDataFetcherStore } from './stores/data-fetcher-store';
8+
import { PRELANSERING_INFO_OM_LOSNING_TOGGLE } from './rest/feature';
9+
import { Prelansering } from './prelansering-side/prelansering';
710

811
function App() {
912
return (
1013
<StoreProvider>
1114
<InternflateDecorator />
15+
<DataFetcher>
16+
<Innhold />
17+
</DataFetcher>
18+
</StoreProvider>
19+
);
20+
}
21+
22+
function Innhold() {
23+
const { featuresFetcher } = useDataFetcherStore();
24+
const erPrelanseringPa = featuresFetcher.data[PRELANSERING_INFO_OM_LOSNING_TOGGLE];
25+
26+
return erPrelanseringPa ? (
27+
<Prelansering />
28+
) : (
29+
<>
1230
<Header />
1331
<Hovedside />
14-
<SokSync />
15-
</StoreProvider>
32+
</>
1633
);
1734
}
1835

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/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);

src/prelansering-side/prelansering-side.less

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@
1515
}
1616

1717
.wrapper-inneholdt {
18-
padding: 3rem 2rem 1rem 2rem;
18+
padding: 2rem 1rem 1rem 1rem;
1919
margin-bottom: 0;
20-
width: 25rem;
20+
width: 27rem;
2121
}
2222

2323
.info-tekst{
2424
padding-top: 2rem;
2525
}
2626

2727
.pcBilde{
28-
height: 18rem;
28+
height: 19rem;
2929
}
3030
}
3131
}
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 { useDataFetcherStore } from '../stores/data-fetcher-store';
5+
6+
export function Prelansering() {
7+
const { featuresFetcher } = useDataFetcherStore();
8+
9+
return (
10+
<>
11+
{featuresFetcher.data[PRELANSERING_INFO_OM_LOSNING_TOGGLE] && <PrelanseringInfoSide />}
12+
</>
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 = 'pto.vedtaksstotte.pilot';
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)