import { useEffect, useCallback } from 'react'; import { Routes, Route, Navigate, useNavigate } from 'react-router-dom'; import { useAuth } from '@picobaas/client/react'; import Layout from './components/Layout'; import HomePage from './pages/HomePage'; import LoginPage from './pages/LoginPage'; import RegisterPage from './pages/RegisterPage'; import ForgotPasswordPage from './pages/ForgotPasswordPage'; import ResetPasswordPage from './pages/ResetPasswordPage'; import VerifyEmailPage from './pages/VerifyEmailPage'; import DashboardPage from './pages/DashboardPage'; import ImageDetailPage from './pages/ImageDetailPage'; import SharedImagePage from './pages/SharedImagePage'; import ImageAnalyticsPage from './pages/ImageAnalyticsPage'; // Hook to handle session expiry - auto logout when session expires function useSessionExpiry() { const { logout, isAuthenticated } = useAuth(); const navigate = useNavigate(); const handleSessionExpired = useCallback(async (event: Event) => { const customEvent = event as CustomEvent<{ reason: string }>; console.warn('Session expired:', customEvent.detail?.reason); // Only handle if user was authenticated if (isAuthenticated) { await logout(); navigate('/login', { replace: true, state: { message: 'Your session has expired. Please log in again.' } }); } }, [logout, navigate, isAuthenticated]); useEffect(() => { window.addEventListener('baas:session-expired', handleSessionExpired); return () => { window.removeEventListener('baas:session-expired', handleSessionExpired); }; }, [handleSessionExpired]); } // Protected route wrapper function ProtectedRoute({ children }: { children: React.ReactNode }) { const { isAuthenticated, isLoading } = useAuth(); if (isLoading) { return (