import { Switch, Route, Redirect, useLocation } from "wouter"; import { useEffect } from "react"; import { queryClient } from "./lib/queryClient"; import { QueryClientProvider, useQuery } from "@tanstack/react-query"; import { Toaster } from "@/components/ui/toaster"; import { TooltipProvider } from "@/components/ui/tooltip"; import { createResponsiveRoute } from "@/components/responsive-route"; import NotFound from "@/pages/not-found"; import Login from "@/pages/login"; import TestCamera from "@/pages/test-camera"; // Create responsive routes with lazy loading for optimal performance const History = createResponsiveRoute( () => import("@/pages/history"), () => import("@/pages/mobile/history") ); const Dashboard = createResponsiveRoute( () => import("@/pages/dashboard"), () => import("@/pages/mobile/dashboard") ); const NewPost = createResponsiveRoute( () => import("@/pages/new-post"), () => import("@/pages/mobile/new-post") ); const Calendar = createResponsiveRoute( () => import("@/pages/calendar"), () => import("@/pages/mobile/calendar") ); const Media = createResponsiveRoute( () => import("@/pages/media"), () => import("@/pages/mobile/media") ); const ImageEditor = createResponsiveRoute( () => import("@/pages/image-editor"), () => import("@/pages/mobile/image-editor") ); const PagesManagement = createResponsiveRoute( () => import("@/pages/pages"), () => import("@/pages/mobile/pages") ); const AI = createResponsiveRoute( () => import("@/pages/ai"), () => import("@/pages/mobile/ai") ); const Settings = createResponsiveRoute( () => import("@/pages/settings"), () => import("@/pages/mobile/settings") ); const SqlAdmin = createResponsiveRoute( () => import("@/pages/sql"), () => import("@/pages/mobile/sql") ); const AudioAdmin = createResponsiveRoute( () => import("@/pages/audio-admin"), () => import("@/pages/mobile/audio-admin") ); const UsersAdmin = createResponsiveRoute( () => import("@/pages/users-admin"), () => import("@/pages/mobile/users-admin") ); const Analytics = createResponsiveRoute( () => import("@/pages/AnalyticsPage"), () => import("@/pages/mobile/analytics") ); // NewReel uses desktop version for now (mobile can be added later) const NewReel = createResponsiveRoute( () => import("@/pages/new-reel"), () => import("@/pages/mobile/new-reel") // Uses same component for now ); // Reel déjà monté : même page responsive sur mobile et desktop const ScheduleReel = createResponsiveRoute( () => import("@/pages/schedule-reel"), () => import("@/pages/schedule-reel") ); function ProtectedRoute({ component: Component, adminOnly = false }: { component: React.ComponentType; adminOnly?: boolean }) { const [, setLocation] = useLocation(); const { data: session, isLoading } = useQuery({ queryKey: ["/api/auth/session"], retry: false, }); useEffect(() => { if (!isLoading && !session) { setLocation("/login"); } }, [isLoading, session, setLocation]); if (isLoading) { return (
Chargement...
Cette page est réservée aux administrateurs.