'use client' import frMessages from '@/lib/locales/fr.json'; import enMessages from '@/lib/locales/en.json'; import {useEffect, useState} from "react"; import {LangContext} from "@/context/LangContext"; import {NextIntlClientProvider} from "next-intl"; import StaticAlert from "@/components/StaticAlert"; import {SessionProps} from "@/lib/models/Session"; import System from "@/lib/models/System"; import {SessionContext} from "@/context/SessionContext"; import {AlertContext} from "@/context/AlertContext"; const messagesMap = { fr: frMessages, en: enMessages }; export default function LoginWrapper({children}: { children: React.ReactNode }) { const [locale, setLocale] = useState<'fr' | 'en'>('fr'); const [errorMessage, setErrorMessage] = useState(''); const [successMessage, setSuccessMessage] = useState(''); const messages = messagesMap[locale]; const [session, setSession] = useState({ isConnected: false, user: null, accessToken: '' }) useEffect((): void => { checkAuthentification().then() }, []); useEffect((): void => { if (session.isConnected) { // Pas de router.push dans Electron, le main process gère if (!window.electron) { window.location.href = '/'; } } }, [session]); async function checkAuthentification(): Promise { const language: "fr" | "en" | null = System.getCookie('lang') as "fr" | "en" | null; if (language) { setLocale(language); } // Pas besoin de vérifier le token ici dans Electron // Le main process gère quelle fenêtre ouvrir } return ( {children}
{ successMessage && { setSuccessMessage('') }}/> } { errorMessage && { setErrorMessage('') }}/> }
) }