import './App.css';
import { BrowserRouter } from 'react-router';
import { ScreensRouter } from '@/screens/ScreensRouter';
import { CurrentAuthProvider } from '@/providers/CurrentAuthProvider';
import { CurrentUserProvider } from '@/providers/CurrentUserProvider';
import { ErrorBoundary } from '@/components/generic/ErrorBoundary';
import { NavContextProvider } from '@/providers/NavContextProvider';
import { ToastProvider } from '@/components/layout/Toast';
import { ModalProvider } from '@/components/modals/Modal';
import { MaintenancePage } from '@/components/layout/MaintenancePage';

const isMaintenanceMode = import.meta.env.VITE_MAINTENANCE_MODE === 'true';

function App() {
  if (isMaintenanceMode) {
    return <MaintenancePage />;
  }

  return (
    <ErrorBoundary>
      <BrowserRouter>
        <CurrentAuthProvider>
          <CurrentUserProvider>
            <NavContextProvider>
              <ToastProvider>
                <ModalProvider>
                  <ScreensRouter />
                </ModalProvider>
              </ToastProvider>
            </NavContextProvider>
          </CurrentUserProvider>
        </CurrentAuthProvider>
      </BrowserRouter>
    </ErrorBoundary>
  );
}

export default App;
