import { Toaster } from '@affine/admin/components/ui/sonner'; import { lazy, ROUTES } from '@affine/routes'; import { withSentryReactRouterV7Routing } from '@sentry/react'; import { useEffect } from 'react'; import { BrowserRouter, Navigate, Outlet, Route, Routes as ReactRouterRoutes, useLocation, } from 'react-router-dom'; import { toast } from 'sonner'; import { SWRConfig } from 'swr'; import { TooltipProvider } from './components/ui/tooltip'; import { isAdmin, useCurrentUser, useServerConfig } from './modules/common'; import { Layout } from './modules/layout'; export const Setup = lazy( () => import(/* webpackChunkName: "setup" */ './modules/setup') ); export const Accounts = lazy( () => import(/* webpackChunkName: "accounts" */ './modules/accounts') ); export const AI = lazy( () => import(/* webpackChunkName: "ai" */ './modules/ai') ); export const About = lazy( () => import(/* webpackChunkName: "about" */ './modules/about') ); export const Settings = lazy( () => import(/* webpackChunkName: "settings" */ './modules/settings') ); export const Auth = lazy( () => import(/* webpackChunkName: "auth" */ './modules/auth') ); const Routes = window.SENTRY_RELEASE ? withSentryReactRouterV7Routing(ReactRouterRoutes) : ReactRouterRoutes; function AuthenticatedRoutes() { const user = useCurrentUser(); useEffect(() => { if (user && !isAdmin(user)) { toast.error('You are not an admin, please login the admin account.'); } }, [user]); if (!user || !isAdmin(user)) { return ; } return ( ); } function RootRoutes() { const config = useServerConfig(); const location = useLocation(); if (!config.initialized && location.pathname !== '/admin/setup') { return ; } if (/^\/admin\/?$/.test(location.pathname)) { return ; } return ; } export const App = () => { return ( }> } /> } /> }> } /> } /> } /> } > } /> ); };