diff --git a/app/login/login/page.tsx b/app/login/login/page.tsx index 823f41d..20d5faa 100755 --- a/app/login/login/page.tsx +++ b/app/login/login/page.tsx @@ -1,7 +1,7 @@ 'use client' -import {useContext} from 'react'; +import {useContext, useEffect, useState} from 'react'; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; -import {faEnvelope} from "@fortawesome/free-solid-svg-icons"; +import {faEnvelope, faWifi, faCloudArrowUp} from "@fortawesome/free-solid-svg-icons"; import LoginForm from "@/app/login/login/LoginForm"; import SocialForm from "@/app/login/login/SocialForm"; import {useTranslations} from "next-intl"; @@ -11,13 +11,67 @@ import System from "@/lib/models/System"; export default function LoginPage() { const t = useTranslations(); const {lang, setLang} = useContext(LangContext); - + const [showOfflineWarning, setShowOfflineWarning] = useState(false); + const [isOnline, setIsOnline] = useState(true); + const toggleLanguage = () => { const newLang = lang === 'fr' ? 'en' : 'fr'; setLang(newLang); System.setCookie('lang', newLang, 365); }; + useEffect(() => { + async function checkFirstConnectionAndNetwork() { + // Check if we're in Electron + if (!window.electron) { + return; + } + + try { + // Check if token exists (first connection) + const token = await window.electron.getToken(); + const hasToken = !!token; + + // Check network status + const online = navigator.onLine; + setIsOnline(online); + + // Show warning if first connection AND offline + if (!hasToken && !online) { + setShowOfflineWarning(true); + } + } catch (error) { + console.error('Error checking first connection:', error); + } + } + + checkFirstConnectionAndNetwork(); + + // Listen for online/offline events + const handleOnline = () => { + setIsOnline(true); + setShowOfflineWarning(false); + }; + const handleOffline = async () => { + setIsOnline(false); + // Check if token exists + if (window.electron) { + const token = await window.electron.getToken(); + if (!token) { + setShowOfflineWarning(true); + } + } + }; + + window.addEventListener('online', handleOnline); + window.addEventListener('offline', handleOffline); + + return () => { + window.removeEventListener('online', handleOnline); + window.removeEventListener('offline', handleOffline); + }; + }, []); + return (
@@ -32,6 +86,29 @@ export default function LoginPage() {
+ {/* Offline warning notification */} + {showOfflineWarning && ( +
+
+
+
+ +
+
+
+
+

+ + {t('loginPage.offlineWarning.title')} +

+

+ {t('loginPage.offlineWarning.message')} +

+
+
+
+ )} +