import Client from "../api/Client.ts" import data from "../Data.ts" import ChatFragment from "./chat/ChatFragment.jsx" import LoginDialog from "./dialog/LoginDialog.tsx" import ContactsListItem from "./main/ContactsListItem.jsx" import RecentsListItem from "./main/RecentsListItem.jsx" import snackbar from "./snackbar.js" import useEventListener from './useEventListener.js' import { MduiDialog, React, MduiNavigationRail, MduiTextField, MduiButton } from '../Imports.ts' import User from "../api/client_data/User.ts" import RecentChat from "../api/client_data/RecentChat.ts" export default function App() { const [recentsList, setRecentsList] = React.useState([ { id: '0', avatar: "https://www.court-records.net/mugshot/aa6-004-maya.png", title: "麻油衣酱", content: "成步堂君, 我又坐牢了(" }, { id: '0', avatar: "https://www.court-records.net/mugshot/aa6-004-maya.png", title: "Maya Fey", content: "我是绫里真宵, 是一名灵媒师~" }, ] as RecentChat[]) const [contactsMap, setContactsMap] = React.useState({ 所有: [ { id: '0', avatar: "https://www.court-records.net/mugshot/aa6-004-maya.png", nickname: "麻油衣酱", }, { id: '0', avatar: "https://www.court-records.net/mugshot/aa6-004-maya.png", nickname: "Maya Fey", }, ], } as unknown as { [key: string]: User[] }) const [navigationItemSelected, setNavigationItemSelected] = React.useState('Recents') const navigationRailRef = React.useRef(null) useEventListener(navigationRailRef, 'change', (event) => { setNavigationItemSelected((event.target as HTMLElement as MduiNavigationRail).value as string) }) const loginDialogRef: React.MutableRefObject = React.useRef(null) const inputAccountRef: React.MutableRefObject = React.useRef(null) const inputPasswordRef: React.MutableRefObject = React.useRef(null) const registerButtonRef: React.MutableRefObject = React.useRef(null) const loginButtonRef: React.MutableRefObject = React.useRef(null) React.useEffect(() => { // deno-lint-ignore no-window-prefix no-window window.addEventListener('load', async () => { Client.connect() const re = await Client.invoke("User.auth", { access_token: data.access_token, }) if (re.code == 401) loginDialogRef.current!.open = true else if (re.code != 200) snackbar("驗證失敗: " + re.msg) }) }, []) return (
{ // 移动端用 页面调试 // 換個地方弄 // (new URL(location.href).searchParams.get('debug') == 'true') && } { // 侧边列表 } { // 聊天页面 }
) }