-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpolling.ts
29 lines (26 loc) · 1.25 KB
/
polling.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { useEffect } from 'react';
import { useQuery } from '@apollo/client';
import { OpptegnelserDocument } from '@io/graphql/index';
import { useMottaOpptegnelser, useNyesteOpptegnelseSekvens, useOpptegnelserPollingRate } from '@state/opptegnelser';
export const usePollEtterOpptegnelser = () => {
const mottaOpptegnelser = useMottaOpptegnelser();
const sekvensId = useNyesteOpptegnelseSekvens();
const pollInterval = useOpptegnelserPollingRate();
const { data, startPolling } = useQuery(OpptegnelserDocument, {
variables: {
sekvensId,
},
pollInterval: 0, // Ikke start pollingen ennå, fordi vi ikke trenger å hente opptegnelser når vi nettopp har hentet personen
onError: (error) => {
console.error(error);
},
});
// Start pollingen manuelt, da gjør apollo første kall *etter* pollInterval, i stedet for at kallet til opptegnelser
// går *samtidig* som personen hentes når man går inn på saksbildet, som ikke gir noen funksjonell mening.
startPolling(pollInterval);
useEffect(() => {
const opptegnelser = data?.opptegnelser ?? [];
if (opptegnelser.length === 0) return;
mottaOpptegnelser(opptegnelser);
}, [data, mottaOpptegnelser]);
};