import React from 'react'; import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { AuthProvider, useAuth } from '@/lib/auth'; import { TenantProvider } from '@/lib/tenant'; import { ToastContext, useToastState } from '@/hooks/useToast'; import { Toaster } from '@/components/ui/Toaster'; import LoginPage from '@/pages/LoginPage'; import DashboardPage from '@/pages/DashboardPage'; import TrackListPage from '@/pages/TrackListPage'; import TrackFormPage from '@/pages/TrackFormPage'; import TrackDaysPage from '@/pages/TrackDaysPage'; import UserListPage from '@/pages/UserListPage'; import SettingsPage from '@/pages/SettingsPage'; import AIAgentSetup from '@/pages/AIAgentSetup'; import LiveFeed from '@/pages/LiveFeed'; import TrainingLab from '@/pages/TrainingLab'; import ClientsManagementView from '@/pages/ClientsManagementView'; import OnboardingWizard from '@/pages/OnboardingWizard'; import ResetPasswordPage from '@/pages/ResetPasswordPage'; import AnalyticsPage from '@/pages/AnalyticsPage'; import ContactsPage from '@/pages/ContactsPage'; import ConversationalDashboard from '@/pages/ConversationalDashboard'; import CrmConversationalDashboard from '@/pages/CrmConversationalDashboard'; import KnowledgeBasePage from '@/pages/KnowledgeBasePage'; import CampaignHistoryPage from '@/pages/CampaignHistoryPage'; import TemplatesPage from '@/pages/TemplatesPage'; import BillingPage from '@/pages/BillingPage'; import { useTenant } from '@/lib/tenant'; import { api } from '@/lib/api'; import MainLayout from '@/components/layouts/MainLayout'; import { logError } from '@/lib/logger'; function ProtectedRoute({ children }: { children: React.ReactNode }) { const { token } = useAuth(); if (!token) return ; return <>{children}; } function AppShell() { const { token, user } = useAuth(); const { setSelectedOrgId, currentOrg } = useTenant(); const [orgs, setOrgs] = React.useState([]); const isSuperAdmin = user?.role === 'SUPER_ADMIN' || user?.role === 'ADMIN'; React.useEffect(() => { if (!token || !isSuperAdmin) return; api.get('/v1/organizations', token) .then(setOrgs) .catch(err => logError("[APP] Failed to fetch organizations:", err)); }, [token, isSuperAdmin]); // Force org selection for Org Admin React.useEffect(() => { if (user?.organizationId && !isSuperAdmin) { setSelectedOrgId(user.organizationId); } }, [user, isSuperAdmin, setSelectedOrgId]); const isCrmActive = !!currentOrg?.isCrmActive; return ( : } /> } /> : } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> : } /> ); } function App() { const toastState = useToastState(); return ( } /> } /> ); } export default App;