From 76d518f229e9c042565f95d8175573eabc1d9284 Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Sat, 20 Dec 2025 01:29:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=94=B6=E8=97=8F=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E6=94=B9=E4=B8=BA=E8=B7=AF=E7=94=B1=E7=95=8C=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/ui/Main.tsx | 16 +++++++++++----- client/ui/MainSharedContext.ts | 1 - client/ui/main-page/FavouriteChatsList.tsx | 3 +-- .../AddFavourtieChatDialog.tsx | 17 +++++++---------- 4 files changed, 19 insertions(+), 18 deletions(-) rename client/ui/{main-page => routers}/AddFavourtieChatDialog.tsx (73%) diff --git a/client/ui/Main.tsx b/client/ui/Main.tsx index 0e34cd8..273c63b 100644 --- a/client/ui/Main.tsx +++ b/client/ui/Main.tsx @@ -16,7 +16,6 @@ import getClient from "../getClient.ts" import showSnackbar from "../utils/showSnackbar.ts" import AllChatsList from "./main-page/AllChatsList.tsx" import FavouriteChatsList from "./main-page/FavouriteChatsList.tsx" -import AddFavourtieChatDialog from "./main-page/AddFavourtieChatDialog.tsx" import RecentChatsList from "./main-page/RecentChatsList.tsx" import UserOrChatInfoDialog from "./routers/UserOrChatInfoDialog.tsx" import UserOrChatInfoDialogLoader from "./routers/UserOrChatInfoDialogDataLoader.ts" @@ -29,6 +28,7 @@ import ProgressDialogFallback from "./ProgressDialogFallback.tsx" import Split from 'split.js' import data from "../data.ts" import LazyChatFragment from "./chat-fragment/LazyChatFragment.tsx" +import AddFavourtieChatDialog from "./routers/AddFavourtieChatDialog.tsx" function Root() { const [myProfileCache, setMyProfileCache] = React.useState() @@ -56,7 +56,6 @@ function Root() { const [showLoginDialog, setShowLoginDialog] = React.useState(false) const [showRegisterDialog, setShowRegisterDialog] = React.useState(false) - const [showAddFavourtieChatDialog, setShowAddFavourtieChatDialog] = React.useState(false) const nav = useNavigate() @@ -76,7 +75,6 @@ function Root() { setShowLoginDialog, setShowRegisterDialog, - setShowAddFavourtieChatDialog, setCurrentSelectedChatId: (id: string) => dispatch({ type: 'update_selected_chat_id', data: id }), } @@ -133,7 +131,6 @@ function Root() { } - 客户端设置 - setShowAddFavourtieChatDialog(true)}>添加收藏对话 + nav('/add/favourite_chat')}>添加收藏对话 创建新的群组
> setShowRegisterDialog: React.Dispatch> - setShowAddFavourtieChatDialog: React.Dispatch> setCurrentSelectedChatId: (id: string) => void setFavouriteChats: (chats: Chat[]) => void diff --git a/client/ui/main-page/FavouriteChatsList.tsx b/client/ui/main-page/FavouriteChatsList.tsx index b9086c2..3cea309 100644 --- a/client/ui/main-page/FavouriteChatsList.tsx +++ b/client/ui/main-page/FavouriteChatsList.tsx @@ -14,7 +14,6 @@ import { useNavigate } from "react-router" export default function FavouriteChatsList({ ...props }: React.HTMLAttributes) { const shared = useContextSelector(MainSharedContext, (context: Shared) => ({ - setShowAddFavourtieChatDialog: context.setShowAddFavourtieChatDialog, state: context.state, functions_lazy: context.functions_lazy, setFavouriteChats: context.setFavouriteChats, @@ -74,7 +73,7 @@ export default function FavouriteChatsList({ ...props }: React.HTMLAttributes shared.setShowAddFavourtieChatDialog(true)}>添加收藏 + }} icon="person_add" onClick={() => nav('/add/favourite_chat')}>添加收藏 shared.functions_lazy.current.updateFavouriteChats()}>刷新列表 diff --git a/client/ui/main-page/AddFavourtieChatDialog.tsx b/client/ui/routers/AddFavourtieChatDialog.tsx similarity index 73% rename from client/ui/main-page/AddFavourtieChatDialog.tsx rename to client/ui/routers/AddFavourtieChatDialog.tsx index 948c2c6..6ec130a 100644 --- a/client/ui/main-page/AddFavourtieChatDialog.tsx +++ b/client/ui/routers/AddFavourtieChatDialog.tsx @@ -1,26 +1,23 @@ import * as React from 'react' import { Button, Dialog, snackbar, TextField } from "mdui" -import { data } from 'react-router' +import { data, useNavigate } from 'react-router' import { useContextSelector } from 'use-context-selector' import MainSharedContext, { Shared } from '../MainSharedContext' import showSnackbar from '../../utils/showSnackbar' import { CallbackError } from 'lingchair-client-protocol' import useEventListener from '../../utils/useEventListener' +import ClientCache from '../../ClientCache' +import useRouterDialogRef from './useRouterDialogRef' export default function AddFavourtieChatDialog({ ...props }: { open: boolean } & React.HTMLAttributes) { - const shared = useContextSelector(MainSharedContext, (context: Shared) => ({ - myProfileCache: context.myProfileCache, - setShowAddFavourtieChatDialog: context.setShowAddFavourtieChatDialog, - })) - - const dialogRef = React.useRef() - useEventListener(dialogRef, 'closed', () => shared.setShowAddFavourtieChatDialog(false)) + const dialogRef = useRouterDialogRef() + const nav = useNavigate() const inputTargetRef = React.useRef(null) async function addFavouriteChat() { try { - shared.myProfileCache!.addFavouriteChatsOrThrow([inputTargetRef.current!.value]) + await (await ClientCache.getMySelf())!.addFavouriteChatsOrThrow([inputTargetRef.current!.value]) inputTargetRef.current!.value = '' showSnackbar({ message: '添加成功!' @@ -39,7 +36,7 @@ export default function AddFavourtieChatDialog({ ...props }: { open: boolean } & if (event.key == 'Enter') addFavouriteChat() }}> - shared.setShowAddFavourtieChatDialog(false)}>取消 + nav(-1)}>取消 addFavouriteChat()}>添加 )