From 48382c45920e82806cffaa4eebbc8e03cd5b41fb Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Fri, 21 Nov 2025 23:14:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=AF=B9=E8=AF=9D?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E7=9A=84=E5=BF=AB=E6=8D=B7=E6=94=B6=E8=97=8F?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/ui/dialog/ChatInfoDialog.tsx | 47 ++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/client/ui/dialog/ChatInfoDialog.tsx b/client/ui/dialog/ChatInfoDialog.tsx index 090ec20..9529733 100644 --- a/client/ui/dialog/ChatInfoDialog.tsx +++ b/client/ui/dialog/ChatInfoDialog.tsx @@ -3,7 +3,7 @@ import Chat from "../../api/client_data/Chat.ts" import useAsyncEffect from "../useAsyncEffect.ts" import Client from "../../api/Client.ts" import data from "../../Data.ts" -import { Dialog } from "mdui" +import { dialog, Dialog } from "mdui" import Avatar from "../Avatar.tsx" import { checkApiSuccessOrSncakbar } from "../snackbar.ts" import User from "../../api/client_data/User.ts" @@ -33,8 +33,7 @@ export default function ChatInfoDialog({ chat, chatInfoDialogRef, openChatFragme return checkApiSuccessOrSncakbar(re, '获取对话信息失败') const info = re.data as Chat - setChatInfo(info) - setIsFavourited(sharedFavouriteChats.indexOf(info) != -1) + setIsFavourited(sharedFavouriteChats.map((v) => v.id).indexOf(info.id) != -1) }, [chat, sharedFavouriteChats]) const avatarUrl = getUrlForFileByHash(chat?.avatar_file_hash as string) @@ -71,21 +70,39 @@ export default function ChatInfoDialog({ chat, chatInfoDialogRef, openChatFragme openUserInfoDialog(re.data!.user_id as string) }}>用户详情 } - { - const re = await Client.invoke(favourited ? "User.removeContacts" : "User.addContacts", { - token: data.access_token, - targets: [ - chat.id - ], - }) - if (re.code != 200) - checkApiSuccessOrSncakbar(re, favourited ? "取消收藏失败" : "收藏失败") - EventBus.emit('ContactsList.updateContacts') - }}>{favourited ? '取消收藏' : '收藏对话'} + dialog({ + headline: favourited ? "取消收藏对话" : "收藏对话", + description: favourited ? "确定从收藏对话列表中移除吗? (虽然这不会导致聊天记录丢失)" : "确定要添加到收藏对话列表吗?", + actions: [ + { + text: "取消", + onClick: () => { + return true + }, + }, + { + text: "确定", + onClick: () => { + ;(async () => { + const re = await Client.invoke(favourited ? "User.removeContacts" : "User.addContacts", { + token: data.access_token, + targets: [ + chat.id + ], + }) + if (re.code != 200) + checkApiSuccessOrSncakbar(re, favourited ? "取消收藏失败" : "收藏失败") + EventBus.emit('ContactsList.updateContacts') + })() + return true + }, + } + ], + })}>{favourited ? '取消收藏' : '收藏对话'} { chatInfoDialogRef.current!.open = false openChatFragment(chat.id) - }}>打开此对话 + }}>打开对话 )