import isMobileUI from "../utils/isMobileUI.ts" import useEventListener from "../utils/useEventListener.ts" import AvatarMySelf from "./AvatarMySelf.tsx" import MainSharedContext from './MainSharedContext.ts' import * as React from 'react' import { BrowserRouter, Outlet, Route, Routes } from "react-router" import LoginDialog from "./main-page/LoginDialog.tsx" import useAsyncEffect from "../utils/useAsyncEffect.ts" import performAuth from "../performAuth.ts" import { CallbackError } from "lingchair-client-protocol" import showCircleProgressDialog from "./showCircleProgressDialog.ts" import RegisterDialog from "./main-page/RegisterDialog.tsx" import sleep from "../utils/sleep.ts" export default function Main() { // 多页面切换 const navigationRef = React.useRef() const [currentShowPage, setCurrentShowPage] = React.useState('Recents') type HTMLElementWithValue = HTMLElement & { value: string } useEventListener(navigationRef, 'change', (event) => { setCurrentShowPage((event.target as HTMLElementWithValue).value) }) const [showLoginDialog, setShowLoginDialog] = React.useState(false) const [showRegisterDialog, setShowRegisterDialog] = React.useState(false) const sharedContext = { ui_functions: React.useRef({ }), setShowLoginDialog, setShowRegisterDialog, } useAsyncEffect(async () => { const waitingForAuth = showCircleProgressDialog("验证中...") try { await performAuth({}) } catch (e) { if (e instanceof CallbackError) if (e.code == 401 || e.code == 400) setShowLoginDialog(true) } // 动画都没来得及, 稍微等一下 ( await sleep(100) waitingForAuth.open = false }) return ( { // 将子路由渲染到此处 } { /** * Default: 侧边列表提供列表切换 */ !isMobileUI() ? 添加收藏对话 创建群组 /** * Mobile: 底部导航栏提供列表切换 */ : { ({ Recents: "最近对话", Contacts: "收藏对话", AllChats: "所有对话", })['Recents'] }
添加收藏对话 创建群组
} { /** * Mobile: 指定高度的容器 * Default: 侧边列表 */ } { /** * Mobile: 底部导航栏提供列表切换 * Default: 侧边列表提供列表切换 */ isMobileUI() && 最近对话 收藏对话 全部对话 } )}>
) }