signal-desktop/ts/util/getRecipientsByConversation.ts

31 lines
908 B
TypeScript
Raw Normal View History

2022-12-08 02:43:48 -05:00
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { ConversationAttributesType } from '../model-types.js';
import type { RecipientsByConversation } from '../state/ducks/stories.js';
import type { ServiceIdString } from '../types/ServiceId.js';
2022-12-08 02:43:48 -05:00
import { getConversationMembers } from './getConversationMembers.js';
import { isNotNil } from './isNotNil.js';
2022-12-08 02:43:48 -05:00
export function getRecipientsByConversation(
conversations: Array<ConversationAttributesType>
): RecipientsByConversation {
const recipientsByConversation: Record<
string,
{
serviceIds: Array<ServiceIdString>;
}
> = {};
2022-12-08 02:43:48 -05:00
conversations.forEach(attributes => {
recipientsByConversation[attributes.id] = {
serviceIds: getConversationMembers(attributes)
2023-08-16 22:54:39 +02:00
.map(member => member.serviceId)
2022-12-08 02:43:48 -05:00
.filter(isNotNil),
};
});
return recipientsByConversation;
}