import React, { Suspense } from 'react'; import { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom'; import { TcProvider, useColorScheme, useLanguage } from 'tailchat-shared'; import clsx from 'clsx'; import { Loadable } from './components/Loadable'; import { ConfigProvider as AntdProvider } from 'antd'; import { Helmet } from 'react-helmet'; import { useRecordMeasure } from './utils/measure-helper'; import { getPopupContainer, preventDefault } from './utils/dom-helper'; import { LoadingSpinner } from './components/LoadingSpinner'; const MainRoute = Loadable(() => import('./routes/Main')); const EntryRoute = Loadable(() => import('./routes/Entry')); const PanelRoute = Loadable(() => import('./routes/Panel')); const InviteRoute = Loadable(() => import('./routes/Invite')); const AppProvider: React.FC = React.memo((props) => { return ( }> {props.children} ); }); AppProvider.displayName = 'AppProvider'; const AppContainer: React.FC = React.memo((props) => { const { isDarkMode, extraSchemeName } = useColorScheme(); return (
{props.children}
); }); AppContainer.displayName = 'AppContainer'; const AppHeader: React.FC = React.memo(() => { const { language } = useLanguage(); return ( ); }); AppHeader.displayName = 'AppHeader'; export const App: React.FC = React.memo(() => { useRecordMeasure('AppRenderStart'); return ( ); }); App.displayName = 'App';