import React, { useCallback } from 'react'; import { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom'; import { TcProvider, useDarkMode, useStorage } from 'tailchat-shared'; import clsx from 'clsx'; import { Loadable } from './components/Loadable'; import { ConfigProvider as AntdProvider } from 'antd'; import { PortalHost } from './components/Portal'; const MainRoute = Loadable(() => import('./routes/Main').then((module) => module.MainRoute) ); const EntryRoute = Loadable(() => import('./routes/Entry').then((module) => module.EntryRoute) ); const InviteRoute = Loadable(() => import('./routes/Invite').then((module) => module.InviteRoute) ); const AppProvider: React.FC = React.memo((props) => { const getPopupContainer = useCallback( (triggerNode: HTMLElement): HTMLElement => { const appRoot = document.querySelector('#tailchat-app'); if (appRoot) { return appRoot; } return document.body; }, [] ); return ( {props.children} ); }); AppProvider.displayName = 'AppProvider'; export const AppContainer: React.FC = React.memo((props) => { const { darkMode } = useDarkMode(); return (
{props.children}
); }); AppContainer.displayName = 'AppContainer'; export const App: React.FC = React.memo(() => { return ( ); }); App.displayName = 'App';