import { ConversationResource } from '../../types' import { PreselectedDirectMessagePerson } from '../../types/resources/direct_message_candidate' import { MemberResource } from '../../types/resources/member' export type MessageAvailableMembersLink = | { label: string; existingConversationId: number } | { label: string; recipients: PreselectedDirectMessagePerson[] } export function resolveMessageAvailableMembersLink({ availableMembers, existingConversations, canMessageAvailableMembers, }: { availableMembers: Pick[] existingConversations: Pick[] | undefined canMessageAvailableMembers: boolean }): MessageAvailableMembersLink | undefined { if (availableMembers.length === 0 || !existingConversations) return undefined const label = availableMembers.length === 1 ? `Message ${availableMembers[0].name.split(' ')[0]}` : `Message the remaining ${availableMembers.length} people` const existingConversation = existingConversations[0] if (existingConversation) { return existingConversation.disabled ? undefined : { label, existingConversationId: Number(existingConversation.id) } } if (!canMessageAvailableMembers) return undefined return { label, recipients: availableMembers.map(m => ({ id: m.id.toString(), name: m.name, avatar: m.avatar, })), } }