import { getCachedUserInfo, isValidStr, useAsync } from '../../index'; import type { ChatConverseState } from '../slices/chat'; import { useUserId } from './useUserInfo'; export function useDMConverseName(converse: ChatConverseState) { const userId = useUserId(); const otherConverseMembers = converse.members.filter((m) => m !== userId); // 成员Id const len = otherConverseMembers.length; const { value: otherMembersInfo = [] } = useAsync(() => { return Promise.all( otherConverseMembers.map((userId) => getCachedUserInfo(userId)) ); }, [otherConverseMembers.join(',')]); if (isValidStr(converse.name)) { return converse.name; } if (len === 1) { return otherMembersInfo[0]?.nickname ?? ''; } else if (len === 2) { return `${otherMembersInfo[0]?.nickname}, ${otherMembersInfo[1]?.nickname}`; } else { return `${otherMembersInfo[0]?.nickname}, ${otherMembersInfo[1]?.nickname} ...`; } }