From ef814ab1e3e17e317074b7fd74a13c147133a0b0 Mon Sep 17 00:00:00 2001 From: Fufeck Date: Wed, 7 Feb 2024 14:48:02 +0100 Subject: [PATCH] feat: delete alert habilitation --- contexts/bal-data.tsx | 14 +++----- hooks/habilitation.js | 71 --------------------------------------- hooks/habilitation.ts | 77 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 80 deletions(-) delete mode 100644 hooks/habilitation.js create mode 100644 hooks/habilitation.ts diff --git a/contexts/bal-data.tsx b/contexts/bal-data.tsx index f9f240f1b..ef8c4e04b 100644 --- a/contexts/bal-data.tsx +++ b/contexts/bal-data.tsx @@ -17,7 +17,6 @@ import { VoiesService, ToponymesService, Sync, - UpdateBatchNumeroDTO, NumeroPopulate, ExtendedBaseLocaleDTO, ExtentedToponymeDTO, @@ -96,14 +95,14 @@ export function BalDataContextProvider({ const { token } = useContext(TokenContext); - const [ + const { habilitation, reloadHabilitation, - isHabilitationValid, - habilitationIsLoading, + isValid: isHabilitationValid, + isLoading: habilitationIsLoading, isHabilitationProcessDisplayed, setIsHabilitationProcessDisplayed, - ] = useHabilitation(initialBaseLocale, token); + } = useHabilitation(initialBaseLocale, token); const reloadParcelles = useCallback(async () => { const parcelles: Array = @@ -160,7 +159,6 @@ export function BalDataContextProvider({ }); }, 30000); // Maximum interval between CRON job } - }, [baseLocale, isRefrehSyncStat, reloadBaseLocale]); const setEditingId = useCallback( @@ -190,9 +188,7 @@ export function BalDataContextProvider({ }, [editingId, numeros, voie, toponyme, voies, toponymes]); const certifyAllNumeros = useCallback(async () => { - await BasesLocalesService.certifyAllNumeros( - baseLocale._id, - ); + await BasesLocalesService.certifyAllNumeros(baseLocale._id); await reloadNumeros(); await reloadVoies(); await reloadToponymes(); diff --git a/hooks/habilitation.js b/hooks/habilitation.js deleted file mode 100644 index d5a9c8529..000000000 --- a/hooks/habilitation.js +++ /dev/null @@ -1,71 +0,0 @@ -import {useState, useCallback, useEffect, useRef} from 'react' -import {toaster} from 'evergreen-ui' -import {useRouter} from 'next/router' - -import {getHabilitation} from '@/lib/bal-api' - -export default function useHabilitation(baseLocale, token) { - const {query} = useRouter() - const [habilitation, setHabilitation] = useState(null) - const [isHabilitationProcessDisplayed, setIsHabilitationProcessDisplayed] = useState(query['france-connect'] === '1') - const [isValid, setIsValid] = useState(false) - const [isLoading, setIsLoading] = useState(false) - - const isFirstLoad = useRef(true) - - const handleInvalidHabilitation = useCallback(habilitation => { - if (habilitation) { - const isAccepted = habilitation.status === 'accepted' - const isExpired = new Date(habilitation.expiresAt) < new Date() - - if (baseLocale.sync && isFirstLoad.current) { - const description = 'Les prochaines modifications ne seront pas prises en compte dans la Base Adresse Nationale. Cliquez sur "Habiliter la Base Adresse Locale" pour renouveler l’habilitation.' - if (!isAccepted) { - toaster.danger('Aucune habilitation valide trouvée', { - description, - duration: 10 - }) - } else if (isExpired) { - toaster.danger('L’habilitaton est expirée', { - description, - duration: 10 - }) - } - - isFirstLoad.current = false - } - - setIsValid(isAccepted && !isExpired) - } else { - toaster.danger('Aucune habilitation trouvée', { - description: 'Cliquez sur "Publier" pour demander une habilitation.', - duration: 10 - }) - setIsValid(false) - } - }, [baseLocale.sync]) - - const reloadHabilitation = useCallback(async () => { - if (token) { - try { - const habilitation = await getHabilitation(token, baseLocale._id) - setHabilitation(habilitation) - handleInvalidHabilitation(habilitation) - } catch { - setHabilitation(null) - } - } - }, [baseLocale._id, token, handleInvalidHabilitation]) - - useEffect(() => { - async function handleReloadHabilitation() { - setIsLoading(true) - await reloadHabilitation() - setIsLoading(false) - } - - handleReloadHabilitation() - }, [token, reloadHabilitation]) - - return [habilitation, reloadHabilitation, isValid, isLoading, isHabilitationProcessDisplayed, setIsHabilitationProcessDisplayed] -} diff --git a/hooks/habilitation.ts b/hooks/habilitation.ts new file mode 100644 index 000000000..d2750a362 --- /dev/null +++ b/hooks/habilitation.ts @@ -0,0 +1,77 @@ +import { + useState, + useCallback, + useEffect, + SetStateAction, + Dispatch, +} from "react"; +import { useRouter } from "next/router"; + +import { + ExtendedBaseLocaleDTO, + HabilitationDTO, + HabilitationService, +} from "@/lib/openapi"; + +interface UseHabilitationType { + habilitation: HabilitationDTO | null; + reloadHabilitation: () => Promise; + isValid: boolean; + isLoading: boolean; + isHabilitationProcessDisplayed: boolean; + setIsHabilitationProcessDisplayed: Dispatch>; +} + +export default function useHabilitation( + baseLocale: ExtendedBaseLocaleDTO, + token: string +): UseHabilitationType { + const { query } = useRouter(); + const [habilitation, setHabilitation] = useState( + null + ); + const [isHabilitationProcessDisplayed, setIsHabilitationProcessDisplayed] = + useState(query["france-connect"] === "1"); + const [isValid, setIsValid] = useState(false); + const [isLoading, setIsLoading] = useState(false); + + const reloadHabilitation = useCallback(async () => { + if (token) { + try { + const habilitation: HabilitationDTO = + await HabilitationService.findHabilitation(baseLocale._id); + setHabilitation(habilitation); + // SET IF HABILITATION IS VALID + if (habilitation) { + const isAccepted = habilitation.status === "accepted"; + const isExpired = new Date(habilitation.expiresAt) < new Date(); + setIsValid(isAccepted && !isExpired); + } else { + setIsValid(false); + } + } catch { + setHabilitation(null); + setIsValid(false); + } + } + }, [baseLocale._id, token]); + + useEffect(() => { + async function handleReloadHabilitation() { + setIsLoading(true); + await reloadHabilitation(); + setIsLoading(false); + } + + handleReloadHabilitation(); + }, [token, reloadHabilitation]); + + return { + habilitation, + reloadHabilitation, + isValid, + isLoading, + isHabilitationProcessDisplayed, + setIsHabilitationProcessDisplayed, + }; +}