import React from 'react' 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 Avatar from "../Avatar.tsx" import { checkApiSuccessOrSncakbar } from "../snackbar.ts" import User from "../../api/client_data/User.ts" import getUrlForFileByHash from "../../getUrlForFileByHash.ts" import openImageViewer from "../openImageViewer.ts" import EventBus from "../../EventBus.ts" interface Args extends React.HTMLAttributes { chat: Chat openChatFragment: (id: string) => void chatInfoDialogRef: React.MutableRefObject openUserInfoDialog: (user: User | string) => void sharedFavouriteChats: Chat[] } export default function ChatInfoDialog({ chat, chatInfoDialogRef, openChatFragment, openUserInfoDialog, sharedFavouriteChats }: Args) { const [chatInfo, setChatInfo] = React.useState(null as unknown as Chat) const [favourited, setIsFavourited] = React.useState(false) useAsyncEffect(async () => { if (chat == null) return const re = await Client.invoke("Chat.getInfo", { token: data.access_token, target: chat.id, }) if (re.code != 200) return checkApiSuccessOrSncakbar(re, '获取对话信息失败') const info = re.data as Chat setChatInfo(info) setIsFavourited(sharedFavouriteChats.indexOf(info) != -1) }, [chat, sharedFavouriteChats]) const avatarUrl = getUrlForFileByHash(chat?.avatar_file_hash as string) return (
avatarUrl && openImageViewer(avatarUrl)} /> {chat?.title}
{ chat?.type == 'private' && { const re = await Client.invoke("Chat.getAnotherUserIdFromPrivate", { token: data.access_token, target: chat.id, }) if (re.code != 200) return checkApiSuccessOrSncakbar(re, '获取用户失败') 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 ? '取消收藏' : '收藏对话'} { chatInfoDialogRef.current!.open = false openChatFragment(chat.id) }}>打开此对话
) }