import { useNavigate, useLocation, Routes, Route, Navigate, Outlet, } from "react-router-dom"; import { DashboardLayout, type SidebarItem } from "@edr/ui-common"; import { CalendarCheck, MapPin, Receipt, Home, Loader2, User, Settings, } from "lucide-react"; import useAuth from "./hooks/useAuth"; import ProfilePage from "./pages/ProfilePage"; import SettingsPage from "./pages/SettingsPage"; import MyPortalPage from "./pages/MyPortalPage"; import EDRFreightLandingPage from "./pages/EDRFreightLandingPage"; import SignupPage from "./pages/accounts/SignupPage"; import OnboardingPage from "./pages/accounts/OnboardingPage"; import VerificationOtpPage from "./pages/accounts/VerificationOtpPage"; import SetPasswordPage from "./pages/accounts/SetPasswordPage"; import LoginPage from "./pages/accounts/LoginPage"; import MyBookings from "./pages/bookings/MyBookings"; import BookingContractPage from "./pages/bookings/BookingContractPage"; import BookingDetailPage from "./pages/bookings/BookingDetailPage"; import NewBookingPage from "./pages/bookings/NewBookingPage"; import EditBookingPage from "./pages/bookings/EditBookingPage"; import CheckPaymentPage from "./pages/payments/CheckPaymentPage"; import TrackingPage from "./pages/tracking/TrackingPage"; import BillingPage from "./pages/billing/BillingPage"; import { useEffect } from "react"; const sidebarItems: SidebarItem[] = [ { label: "Home", href: "/portal", icon: }, { label: "My Bookings", href: "/bookings", icon: }, { label: "Tracking", href: "/tracking", icon: }, { label: "Billing", href: "/billing", icon: }, { label: "Profile", href: "/profile", icon: }, { label: "Settings", href: "/settings", icon: }, ]; const App = () => { const navigate = useNavigate(); const location = useLocation(); const { user, isPending, logout, customer, customerQuery } = useAuth(); useEffect(() => { if (isPending || customerQuery.isPending) return; const isInProtectedRoutes = sidebarItems.find((item) => location.pathname.startsWith(item.href), ); console.log({ isInProtectedRoutes, location }); if (!user) { if (isInProtectedRoutes) return navigate("/login"); return; } if (user && location.pathname === "/") navigate("/portal"); else if (!customer && !!isInProtectedRoutes) navigate("/onboarding"); }, [user, location, customer]); if (isPending) { return (
); } const displayName = user?.name?.en || user?.username || user?.email || "User"; const userEmail = user?.email; return ( } /> } /> } /> } /> } /> } /> } /> } > } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* } /> */} ); }; export default App;