Skip to content

Commit 3666462

Browse files
tu55eladdhenrikthebossmadsleegiilerikbosnes
authored
Sett eier av aktivitet til context når man åpner dyplenke (#1323)
* Wip; mock av eier * Be om eier av kort når ett aktivitetskort hentes * Wip; fiskut eier ut av respons * WIP: Sett eier på state * Wip: sjekk eier * legg til state for feil eier * Fiks initialState-objekt * Fiks test * reverte endringer som ikke trengs * reverte endringer som ikke trengs * legg til bytte av bruker i context * Fix test * endre fra put til post * legg til import for post * sjekk at er veileder * fjern ikke-fungerende sjekk på er veileder * legg til logging ved dyplenking til annen eier --------- Co-authored-by: Henrik uran <122083502+henriktheboss@users.noreply.github.com> Co-authored-by: Mads Lee Giil <mads.lee.giil@nav.no> Co-authored-by: erikb <erik.bosnes@nav.no> Co-authored-by: Mads Lee Giil <74543378+madsleegiil@users.noreply.github.com>
1 parent 66a0ea6 commit 3666462

File tree

11 files changed

+71
-18
lines changed

11 files changed

+71
-18
lines changed

graphql/schema.graphql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
type Query {
22
perioder(fnr: String!): [OppfolgingsPeriode]
3+
aktivitet(aktivitetId: String!): AktivitetDTO
4+
eier (aktivitetId: String!): Eier
35
}
46

57
type OppfolgingsPeriode {
68
id: String
79
aktiviteter: [AktivitetDTO]
810
}
911

12+
type Eier {
13+
fnr: String
14+
}
15+
1016
type AktivitetDTO {
1117
id: String
1218
funksjonellId: String

src/amplitude/amplitude.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ export function logModalLukket({
7777
});
7878
}
7979

80+
export function loggDyplenkingTilAnnenBruker() {
81+
return logAmplitudeEvent({ name: 'dyplenking', data: { text: 'Dyplenking til annen bruker' } });
82+
}
83+
8084
type Modify<T, U> = Omit<T, keyof U> & U;
8185
export type TextCheckerAmplitudeAnalysis = Omit<
8286
Modify<

src/amplitude/taxonomy-events.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type AmplitudeEvent =
1010
};
1111
}
1212
| { name: 'toggle'; data: { text: string; enabled: boolean } }
13+
| { name: 'dyplenking'; data: {text: string }}
1314
| { name: 'knapp klikket'; data: { tekst: string } }
1415
| { name: 'accordion åpnet'; data: { tekst: string } }
1516
| { name: 'filtervalg'; data: { filternavn: string } }

src/api/aktivitetsplanGraphql.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,11 @@ const query: string = `
135135
}
136136
`;
137137

138-
const aktivitetMedHistorikkQuery = `
138+
const aktivitetQuery = `
139139
query($aktivitetId: String!) {
140+
eier(aktivitetId: $aktivitetId) {
141+
fnr
142+
},
140143
aktivitet(aktivitetId: $aktivitetId) {
141144
${allAktivitetFields}
142145
historikk {
@@ -160,8 +163,8 @@ const queryBody = (fnr: string) => ({
160163
},
161164
});
162165

163-
const aktivitetMedHistorikkQueryBody = (aktivitetId: string) => ({
164-
query: aktivitetMedHistorikkQuery,
166+
const aktivitetQueryBody = (aktivitetId: string) => ({
167+
query: aktivitetQuery,
165168
variables: {
166169
aktivitetId,
167170
},
@@ -190,22 +193,29 @@ export const hentAktiviteterGraphql = async (): Promise<AktivitetsplanResponse>
190193
.then(sjekkGraphqlFeil<{ perioder: OppfolgingsPerioder[] }>);
191194
};
192195

193-
export const hentAktivitetMedHistorikkGraphql = (aktivitetId: string) => {
196+
export const hentAktivitetGraphql = (aktivitetId: string) => {
194197
return fetch(AKTIVITET_GRAPHQL_BASE_URL, {
195198
...DEFAULT_CONFIG,
196199
method: 'POST',
197200
headers: {
198201
'Content-Type': 'application/json',
199202
'Nav-Consumer-Id': 'aktivitetsplan',
200203
},
201-
body: JSON.stringify(aktivitetMedHistorikkQueryBody(aktivitetId)),
204+
body: JSON.stringify(aktivitetQueryBody(aktivitetId)),
202205
})
203206
.then(sjekkStatuskode)
204207
.then(toJson)
205208
.then(
206209
sjekkGraphqlFeil<{
207210
aktivitet: VeilarbAktivitet & { historikk: Historikk; id: string; oppfolgingsperiodeId: string };
211+
eier: { fnr: string};
208212
}>,
209213
)
210-
.then((it) => ({ ...it, data: { aktivitet: { ...it.data.aktivitet, id: aktivitetId } } }));
214+
.then((it) => ({
215+
...it,
216+
data: {
217+
aktivitet: { ...it.data.aktivitet, id: aktivitetId } ,
218+
eier : { fnr: it.data.eier.fnr }
219+
},
220+
}));
211221
};

src/api/modiaContextHolder.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { postAsJson } from './utils';
2+
import { MODIA_CONTEXT_BASE_URL } from '../environment';
3+
4+
export const lastAltPaaNyttMedNyBruker = (fnr: string): Promise<void> => postAsJson(`${MODIA_CONTEXT_BASE_URL}/context`, {eventType: "NY_AKTIV_BRUKER", verdi: fnr});

src/datatypes/internAktivitetTypes.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ export function isSamtaleOrMote(aktivitet: AlleAktiviteter): aktivitet is Samtal
142142
aktivitet.type === VeilarbAktivitetType.SAMTALEREFERAT_TYPE || aktivitet.type === VeilarbAktivitetType.MOTE_TYPE
143143
);
144144
}
145+
145146
export const isEksternAktivitet = (aktivitet: AlleAktiviteter): aktivitet is EksternAktivitet => {
146147
return aktivitet.type === VeilarbAktivitetType.EKSTERN_AKTIVITET_TYPE;
147148
};
@@ -164,12 +165,12 @@ export enum EksternAktivitetType {
164165
MIDL_LONNSTILSKUDD_TYPE = 'MIDLERTIDIG_LONNSTILSKUDD',
165166
VARIG_LONNSTILSKUDD_TYPE = 'VARIG_LONNSTILSKUDD',
166167
INDOPPFAG = 'INDOPPFAG',
167-
ARBFORB = 'ARBFORB',
168-
AVKLARAG = 'AVKLARAG',
168+
ARBFORB = 'ARBFORB',
169+
AVKLARAG = 'AVKLARAG',
169170
VASV = 'VASV',
170171
ARBRRHDAG = 'ARBRRHDAG',
171172
DIGIOPPARB = 'DIGIOPPARB',
172173
JOBBK = 'JOBBK',
173174
GRUPPEAMO = 'GRUPPEAMO',
174-
GRUFAGYRKE = 'GRUFAGYRKE'
175+
GRUFAGYRKE = 'GRUFAGYRKE',
175176
}

src/environment.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const VEILARBLEST_BASE_URL = stripPrependingSlash(BASE_URL) + '/veilarble
2424
export const PERSON_BASE_URL = stripPrependingSlash(BASE_URL) + '/veilarbperson/api';
2525
export const MALVERK_BASE_URL = stripPrependingSlash(BASE_URL) + '/veilarbmalverk/api';
2626
export const VEILEDER_BASE_URL = stripPrependingSlash(BASE_URL) + '/veilarbveileder/api';
27+
export const MODIA_CONTEXT_BASE_URL = stripPrependingSlash(BASE_URL) + '/modiacontextholder/api';
2728

2829
export enum Env {
2930
Local = 'local',

src/mocks/handlers.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,13 @@ export const handlers = [
8686
'/veilarbaktivitet/graphql',
8787
failOrGrahpqlResponse(getAktivitetFeiler, async (req) => {
8888
const body = (await req.json()) as { query: string; variables: Record<string, any> };
89-
if (body.query.includes('historikk')) {
90-
const aktivitetId = body.variables.aktivitetId;
89+
const aktivitetId = body.variables.aktivitetId;
90+
if (aktivitetId) {
9191
const aktivitet = aktiviteterData.aktiviteter.find((it) => it.id === aktivitetId);
9292
await new Promise((resolve) => {
9393
setTimeout(resolve, 2000);
9494
});
95-
return aktivitetHistorikkResponse(aktivitet);
95+
return aktivitetResponse(aktivitet);
9696
} else {
9797
return aktivitestplanResponse(); // Default aktiviteter
9898
}
@@ -193,10 +193,13 @@ export const aktivitestplanResponse = (
193193
};
194194
};
195195

196-
const aktivitetHistorikkResponse = (aktivitet: VeilarbAktivitet) => {
196+
export const aktivitetResponse = (aktivitet: VeilarbAktivitet) => {
197197
const now = new Date();
198198
return {
199199
data: {
200+
eier: {
201+
fnr: '13837597573',
202+
},
200203
aktivitet: {
201204
...aktivitet,
202205
historikk: {

src/moduler/aktivitet/aktivitet-actions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as Api from '../../api/aktivitetAPI';
44
import { AktivitetStatus } from '../../datatypes/aktivitetTypes';
55
import { Forhaandsorientering } from '../../datatypes/forhaandsorienteringTypes';
66
import { MoteAktivitet, SamtalereferatAktivitet, VeilarbAktivitet } from '../../datatypes/internAktivitetTypes';
7-
import { hentAktiviteterGraphql, hentAktivitetMedHistorikkGraphql } from '../../api/aktivitetsplanGraphql';
7+
import { hentAktiviteterGraphql, hentAktivitetGraphql } from '../../api/aktivitetsplanGraphql';
88
import { Historikk } from '../../datatypes/Historikk';
99

1010
const utenHistorikk = <Aktivitet extends VeilarbAktivitet>(aktivitet: Aktivitet) => {
@@ -17,7 +17,7 @@ export const hentAktiviteter = createAsyncThunk('aktiviteter/hent', async () =>
1717
});
1818

1919
export const hentAktivitet = createAsyncThunk('aktivitet/hent', async (aktivitetId: string) => {
20-
return await hentAktivitetMedHistorikkGraphql(aktivitetId);
20+
return await hentAktivitetGraphql(aktivitetId);
2121
});
2222

2323
export const oppdaterAktivitetEtikett = createAsyncThunk(

src/moduler/aktivitet/aktivitet-slice.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ import {
1818
} from './aktivitet-actions';
1919
import { RootState } from '../../store';
2020
import { createSelector } from 'reselect';
21+
import { lastAltPaaNyttMedNyBruker } from '../../api/modiaContextHolder';
22+
import { erEksternBruker } from '../../mocks/demo/localStorage';
23+
import { useErVeileder } from '../../Provider';
24+
import { loggDyplenkingTilAnnenBruker } from '../../amplitude/amplitude';
2125

2226
type PerioderMedAktiviteter = {
2327
id: string;
@@ -35,6 +39,7 @@ export const aktivitetAdapter = createEntityAdapter<VeilarbAktivitet>({
3539
export const oppfolgingsdperiodeAdapter = createEntityAdapter<PeriodeEntityState>({
3640
selectId: (model) => model.id,
3741
});
42+
3843
const { selectById: selectOppfolgingsperiodeById, selectAll: selectAllOppfolgingsperioder } =
3944
oppfolgingsdperiodeAdapter.getSelectors();
4045
const { selectById: selectAktivitetById, selectAll: selectAlleAktiviter } = aktivitetAdapter.getSelectors();
@@ -110,6 +115,18 @@ const aktivitetSlice = createSlice({
110115
});
111116
builder.addCase(hentAktivitet.fulfilled, (state, action) => {
112117
const aktivitet = action.payload.data.aktivitet;
118+
const eier = action.payload.data.eier;
119+
const aktivitetIDer = selectAllOppfolgingsperioder(state).map ((periode) =>
120+
selectAlleAktiviter(periode.aktiviteter).map((aktivitet) => aktivitet.id)
121+
).flat()
122+
123+
const aktivitetTilhorerBrukerIContext = !aktivitetIDer.includes(aktivitet.id)
124+
125+
if (aktivitetTilhorerBrukerIContext) {
126+
loggDyplenkingTilAnnenBruker();
127+
lastAltPaaNyttMedNyBruker(eier.fnr);
128+
}
129+
113130
nyStateMedOppdatertAktivitet(state, aktivitet);
114131
});
115132
builder.addCase(lagNyAktivitet.fulfilled, (state, action) => {

src/moduler/dialog/dialog-lenke.test.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { setupServer } from 'msw/node';
2-
import { aktivitestplanResponse, handlers } from '../../mocks/handlers';
2+
import { aktivitestplanResponse, aktivitetResponse, handlers } from '../../mocks/handlers';
33
import { describe } from 'vitest';
44
import { act, fireEvent, render, waitFor } from '@testing-library/react';
55
import { WrappedHovedside } from '../../testUtils/WrappedHovedside';
@@ -35,8 +35,14 @@ const server = setupServer(
3535
'/veilarbaktivitet/graphql',
3636
failOrGrahpqlResponse(
3737
() => false,
38-
() => {
39-
return aktivitestplanResponse({ aktiviteter: testAktiviteter });
38+
async (req) => {
39+
const body = (await req.json()) as { query: string; variables: Record<string, any> };
40+
const aktivitetId = body.variables.aktivitetId;
41+
if (aktivitetId) {
42+
return aktivitetResponse(testAktiviteter.find((aktivitet) => aktivitet.id == aktivitetId)!);
43+
} else {
44+
return aktivitestplanResponse({ aktiviteter: testAktiviteter });
45+
}
4046
},
4147
),
4248
),

0 commit comments

Comments
 (0)