From 44ada8206d7edfad2e1d0de3e01379f39e38c975 Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Sun, 25 Jan 2026 00:29:45 +0800 Subject: [PATCH] feat(client): creat Group --- client/ui/Main.tsx | 4 ++-- client/ui/app-state/AppStateContext.ts | 14 +++++++------ .../ui/app-state/AppStateContextWrapper.tsx | 6 ++++++ client/ui/app-state/CreateGroupDialog.tsx | 21 ++++++++++--------- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/client/ui/Main.tsx b/client/ui/Main.tsx index 0fddb9d..b4e2bee 100644 --- a/client/ui/Main.tsx +++ b/client/ui/Main.tsx @@ -10,7 +10,7 @@ import { CallbackError, Chat, UserMySelf } from "lingchair-client-protocol" import showCircleProgressDialog from "./showCircleProgressDialog.ts" import RegisterDialog from "./main-page/RegisterDialog.tsx" import sleep from "../utils/sleep.ts" -import { $, dialog, NavigationDrawer } from "mdui" +import { $, NavigationDrawer } from "mdui" import getClient from "../getClient.ts" import showSnackbar from "../utils/showSnackbar.ts" import AllChatsList from "./main-page/AllChatsList.tsx" @@ -135,7 +135,7 @@ function Root() { }}> 客户端设置 AppStateRef.current!.openAddFavouriteChat()}>添加收藏对话 - 创建新的群组 + AppStateRef.current!.openCreateGroup()}>创建新的群组
void, - openUserInfo: (user: Chat | User | string) => void, - openEditMyProfile: () => void, - openAddFavouriteChat: () => void, - openChat: (chat: string | Chat, inDialog?: boolean) => void, - closeChat: () => void, + openChatInfo: (chat: Chat | string) => void + openUserInfo: (user: Chat | User | string) => void + openEditMyProfile: () => void + openAddFavouriteChat: () => void + openCreateGroup: () => void + openChat: (chat: string | Chat, inDialog?: boolean) => void + closeChat: () => void } const AppStateContext = React.createContext({ @@ -15,6 +16,7 @@ const AppStateContext = React.createContext({ openUserInfo: () => {}, openEditMyProfile: () => {}, openAddFavouriteChat: () => {}, + openCreateGroup: () => {}, openChat: () => {}, closeChat: () => {}, }) diff --git a/client/ui/app-state/AppStateContextWrapper.tsx b/client/ui/app-state/AppStateContextWrapper.tsx index d466c49..3187c28 100644 --- a/client/ui/app-state/AppStateContextWrapper.tsx +++ b/client/ui/app-state/AppStateContextWrapper.tsx @@ -12,6 +12,7 @@ import MainSharedContext, { Shared } from "../MainSharedContext.ts" import ChatFragmentDialog from "./ChatFragmentDialog.tsx" import useAsyncEffect from "../../utils/useAsyncEffect.ts" import ClientCache from "../../ClientCache.ts" +import CreateGroupDialog from "./CreateGroupDialog.tsx" const config = await fetch('/config.json').then((re) => re.json()) @@ -33,6 +34,7 @@ export default function DialogContextWrapper({ children, useRef }: { children: R const editMyProfileDialogRef = React.useRef() const addFavouriteChatDialogRef = React.useRef() + const createGroupDialogRef = React.useRef() const setCurrentSelectedChatId = useContextSelector( MainSharedContext, @@ -66,6 +68,9 @@ export default function DialogContextWrapper({ children, useRef }: { children: R static openAddFavouriteChat() { addFavouriteChatDialogRef.current!.open = true } + static openCreateGroup() { + createGroupDialogRef.current!.open = true + } static async openChat(chat: string | Chat, inDialog?: boolean) { if (chat instanceof Chat) chat = chat.getId() @@ -87,6 +92,7 @@ export default function DialogContextWrapper({ children, useRef }: { children: R + {children} } diff --git a/client/ui/app-state/CreateGroupDialog.tsx b/client/ui/app-state/CreateGroupDialog.tsx index 98970cd..017bcf4 100644 --- a/client/ui/app-state/CreateGroupDialog.tsx +++ b/client/ui/app-state/CreateGroupDialog.tsx @@ -1,9 +1,9 @@ import * as React from 'react' import { Dialog, TextField } from "mdui" import showSnackbar from '../../utils/showSnackbar' -import { CallbackError } from 'lingchair-client-protocol' +import { CallbackError, Chat } from 'lingchair-client-protocol' import useEventListener from '../../utils/useEventListener.ts' -import ClientCache from '../../ClientCache.ts' +import getClient from '../../getClient.ts' export default function CreateGroupDialog({ useRef }: { useRef: React.MutableRefObject }) { const inputTargetRef = React.useRef(null) @@ -12,29 +12,30 @@ export default function CreateGroupDialog({ useRef }: { useRef: React.MutableRef inputTargetRef.current!.value = '' }) - async function addFavouriteChat() { + async function createGroup() { try { - await (await ClientCache.getMySelf())!.addFavouriteChatsOrThrow([inputTargetRef.current!.value]) + await Chat.createGroupOrThrow(getClient(), inputTargetRef.current!.value) inputTargetRef.current!.value = '' showSnackbar({ - message: '添加成功!' + message: '创建成功!' }) + useRef.current!.open = false } catch (e) { if (e instanceof CallbackError) showSnackbar({ - message: '添加收藏对话失败: ' + e.message + message: '创建群组失败: ' + e.message }) } } return ( - - { + + { if (event.key == 'Enter') - addFavouriteChat() + createGroup() }}> useRef.current!.open = false}>取消 - addFavouriteChat()}>添加 + createGroup()}>创建 ) }