import { lazy, useEffect } from "react"; import { Switch, Route, Redirect, useLocation } from "wouter"; import { useAuthUnified } from "@/hooks/useAuthUnified"; import { useScreenSize } from "@/hooks/use-screen-size"; import NotFound from "@/pages/not-found"; import AuthPage from "@/pages/AuthPage"; import Dashboard from "@/pages/Dashboard"; import Layout from "@/components/Layout"; // Mobile : coque et page d'accueil chargées immédiatement import MobileApp from "@/pages/mobile/MobileApp"; import MobileDashboardPage from "@/pages/mobile/DashboardPage"; // Les autres pages sont chargées à la demande (un fichier JS par page) : l'écran // de connexion et le tableau de bord n'attendent plus le code de toutes les pages // ni la bibliothèque de graphiques. Le est placé dans la zone de // contenu de Layout et de MobileApp, le menu et l'en-tête restent affichés. const Calendar = lazy(() => import("@/pages/Calendar")); const Orders = lazy(() => import("@/pages/Orders")); const Deliveries = lazy(() => import("@/pages/Deliveries")); const Suppliers = lazy(() => import("@/pages/Suppliers")); const Groups = lazy(() => import("@/pages/Groups")); const Users = lazy(() => import("@/pages/Users")); const BLReconciliation = lazy(() => import("@/pages/BLReconciliation")); const Publicities = lazy(() => import("@/pages/Publicities")); const CustomerOrders = lazy(() => import("@/pages/CustomerOrders")); const DlcPage = lazy(() => import("@/pages/DlcPage")); const Utilities = lazy(() => import("@/pages/Utilities")); const Tasks = lazy(() => import("@/pages/Tasks")); const SavTickets = lazy(() => import("@/pages/SavTickets")); const Avoirs = lazy(() => import("@/pages/Avoirs")); const Analytics = lazy(() => import("@/pages/Analytics")); const PaymentSchedulePage = lazy(() => import("@/pages/PaymentSchedulePage")); const Contacts = lazy(() => import("@/pages/Contacts")); // Pages mobiles chargées à la demande const MobileOrdersPage = lazy(() => import("@/pages/mobile/OrdersPage")); const MobileDeliveriesPage = lazy(() => import("@/pages/mobile/DeliveriesPage")); const MobileCalendarPage = lazy(() => import("@/pages/mobile/CalendarPage")); const MobileTasksPage = lazy(() => import("@/pages/mobile/TasksPage")); const MobilePublicitiesPage = lazy(() => import("@/pages/mobile/PublicitiesPage")); const MobileCustomerOrdersPage = lazy(() => import("@/pages/mobile/CustomerOrdersPage")); const MobileDlcPage = lazy(() => import("@/pages/mobile/DlcPage")); const MobileSavPage = lazy(() => import("@/pages/mobile/SavPage")); const MobileAvoirsPage = lazy(() => import("@/pages/mobile/AvoirsPage")); // Helper component to handle redirection const RedirectToAuth = () => { const [, setLocation] = useLocation(); useEffect(() => { setLocation("/auth"); }, [setLocation]); return ; }; function RouterProduction() { const { isAuthenticated, isLoading, user } = useAuthUnified(); const { isMobile } = useScreenSize(); // Loading state if (isLoading) { return (

Chargement...

); } // Not authenticated if (!isAuthenticated || !user) { return ( {/* Redirect all other routes to auth */} ); } // ===== MOBILE ROUTES (avec MobileApp pour StoreProvider) ===== if (isMobile) { return ( {/* Pages sans version mobile - utiliser version desktop pour l'instant */} {/* Redirection /auth vers dashboard (navigation interne, sans rechargement) */} ); } // ===== DESKTOP ROUTES (avec Layout standard) ===== return ( {/* Routes de compatibilité - redirection vers utilities */} {/* Redirection depuis /auth vers dashboard après authentification (navigation interne, sans rechargement complet de l'application) */} ); } export default RouterProduction;