import { dialog } from "mdui" import useRouterDialogRef from "./useRouterDialogRef" import { useLoaderData, useNavigate } from "react-router" import { CallbackError } from "lingchair-client-protocol" import showSnackbar from "../../utils/showSnackbar" import Avatar from "../Avatar" import { useContextSelector } from "use-context-selector" import MainSharedContext, { Shared } from "../MainSharedContext" import * as React from 'react' import UserOrChatInfoDialogLoader from "./UserOrChatInfoDialogDataLoader" import ClientCache from "../../ClientCache" import getClient from "../../getClient" import gotoChat from "./gotoChat" import isMobileUI from "../../utils/isMobileUI" export default function UserOrChatInfoDialog() { const favouriteChats = useContextSelector( MainSharedContext, (context: Shared) => context.state.favouriteChats ) const setCurrentSelectedChatId = useContextSelector( MainSharedContext, (context: Shared) => context.setCurrentSelectedChatId ) const nav = useNavigate() const dialogRef = useRouterDialogRef() const { chat, id, mySelf } = useLoaderData() const isMySelf = mySelf?.getId() == id const favourited = React.useMemo(() => favouriteChats.map((v) => v.getId()).indexOf(chat.getId() || '') != -1, [chat, favouriteChats]) return (
{chat.getTitle() + (isMySelf ? ' (我)' : '')} ({chat.getType()}) ID: {chat.getType() == 'private' ? id : chat.getId()}
{ isMySelf && nav('/settings/edit_profile')}> 编辑资料 } { !isMySelf && dialog({ headline: favourited ? "取消收藏对话" : "收藏对话", description: favourited ? "确定从收藏对话列表中移除吗? (虽然这不会导致聊天记录丢失)" : "确定要添加到收藏对话列表吗?", actions: [ { text: "取消", onClick: () => { return true }, }, { text: "确定", onClick: () => { ; (async () => { try { if (favourited) await (await ClientCache.getMySelf())!.removeFavouriteChatsOrThrow([chat.getId()]) else await (await ClientCache.getMySelf())!.addFavouriteChatsOrThrow([chat.getId()]) } catch (e) { if (e instanceof CallbackError) showSnackbar({ message: (favourited ? "取消收藏对话" : "收藏对话") + '失败: ' + e.message }) } })() return true }, } ], })}>{favourited ? '取消收藏' : '收藏对话'} } { await nav(-1) gotoChat(isMobileUI() ? { nav: nav, id: chat.getId(), } : { setter: setCurrentSelectedChatId, id: chat.getId(), }) }}>打开对话
) /* const location = useLocation() const searchParams = useSearchParams() const params = useParams() return (
" + Object.keys(location) // @ts-ignore 懒 .map((k) => `${k} = ${location[k]}`) .join('

') + "

↓ searchParams

" + Object.keys(searchParams) // @ts-ignore 懒 .map((k) => `${k} = ${searchParams[k]}`) .join('

') + "

↓ params

" + Object.keys(params) // @ts-ignore 懒 .map((k) => `${k} = ${params[k]}`) .join('

') }}>
) */ }