import { Switch, Route, Redirect, Router as WouterRouter, useLocation } from "wouter"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Toaster } from "@/components/ui/toaster"; import { TooltipProvider } from "@/components/ui/tooltip"; import { AuthProvider } from "@/contexts/AuthContext"; import { IncomingNotePopupProvider } from "@/contexts/IncomingNotePopupContext"; import { IncomingNotePopup } from "@/components/notes/incoming-note-popup"; import { useNotificationsSocket } from "@/hooks/use-notifications-socket"; import { useAudioUnlock } from "@/hooks/use-audio-unlock"; import { useAutoplayHint } from "@/hooks/use-autoplay-hint"; import { useScrollFocusedDialogField } from "@/hooks/use-scroll-focused-dialog-field"; import { useVisualViewportVars } from "@/hooks/use-visual-viewport-vars"; import { UpcomingMeetingAlert } from "@/components/executive-meetings/upcoming-meeting-alert"; import { PushEnablePrompt } from "@/components/push-enable-prompt"; import NotFound from "@/pages/not-found"; import LoginPage from "@/pages/login"; import RegisterPage from "@/pages/register"; import ForgotPasswordPage from "@/pages/forgot-password"; import ResetPasswordPage from "@/pages/reset-password"; import HomePage from "@/pages/home"; import ServicesPage from "@/pages/services"; import NotificationsPage from "@/pages/notifications"; import AdminPage from "@/pages/admin"; import NotesPage from "@/pages/notes"; import MyOrdersPage from "@/pages/my-orders"; import OrdersIncomingPage from "@/pages/orders-incoming"; import ExecutiveMeetingsPage from "@/pages/executive-meetings"; import EmbeddedAppPage from "@/pages/embedded-app"; const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false, staleTime: 30_000, }, }, }); function ExecutiveMeetingsRedirect() { const [location] = useLocation(); const suffix = typeof window !== "undefined" ? window.location.search + window.location.hash : ""; const subPath = location.replace(/^\/executive-meetings/, ""); return ; } function NotificationsSocketBridge() { useNotificationsSocket(); useAudioUnlock(); useAutoplayHint(); useScrollFocusedDialogField(); useVisualViewportVars(); return null; } function Router() { return ( {/* Back-compat redirect: the page used to live at /executive-meetings. Stored PDFs, email links, and bookmarks still point there, so catch the old path (and any deep sub-path) and forward to /meetings while preserving the user's query string and hash. */} ); } function App() { return ( ); } export default App;