diff --git a/ts/session/sending/MessageQueue.ts b/ts/session/sending/MessageQueue.ts index 5f9aa11a7..a0c83c731 100644 --- a/ts/session/sending/MessageQueue.ts +++ b/ts/session/sending/MessageQueue.ts @@ -14,15 +14,15 @@ import { } from '../messages/outgoing'; import { PendingMessageCache } from './PendingMessageCache'; import { + GroupUtils, JobQueue, SyncMessageUtils, TypedEventEmitter, - GroupUtils, } from '../utils'; import { PubKey } from '../types'; import { MessageSender } from '.'; import { SessionProtocol } from '../protocols'; -import * as UserUtil from '../../util/user'; +import { UserUtil } from '../../util'; export class MessageQueue implements MessageQueueInterface { public readonly events: TypedEventEmitter; @@ -92,9 +92,12 @@ export class MessageQueue implements MessageQueueInterface { // Closed groups if (message instanceof ClosedGroupMessage) { // Get devices in closed group - const recipients: Array = await GroupUtils.getGroupMembers( - message.groupId - ); + const groupPubKey = PubKey.from(message.groupId); + if (!groupPubKey) { + return false; + } + + const recipients = await GroupUtils.getGroupMembers(groupPubKey); await this.sendMessageToDevices(recipients, message); return true; @@ -136,8 +139,7 @@ export class MessageQueue implements MessageQueueInterface { public async processPending(device: PubKey) { const messages = this.pendingMessageCache.getForDevice(device); - // const isMediumGroup = messages.some(m => m instance of MediumGroupMessage) - const isMediumGroup = false; + const isMediumGroup = GroupUtils.isMediumGroup(device); const hasSession = SessionProtocol.hasSession(device); if (!isMediumGroup && !hasSession) { diff --git a/ts/session/utils/Groups.ts b/ts/session/utils/Groups.ts index c23278513..2a0d130ba 100644 --- a/ts/session/utils/Groups.ts +++ b/ts/session/utils/Groups.ts @@ -1,14 +1,11 @@ -import { getAllConversations } from '../../../js/modules/data'; -import { Whisper } from '../../window'; +import { ConversationController } from '../../window'; import { PubKey } from '../types'; -export async function getGroupMembers(groupId: string): Promise> { - const conversations = await getAllConversations({ - ConversationCollection: Whisper.ConversationCollection, - }); - const groupConversation = conversations.find(c => c.id === groupId); - - const groupMembers = groupConversation.attributes.members; +export async function getGroupMembers(groupId: PubKey): Promise> { + const groupConversation = ConversationController.get(groupId.key); + const groupMembers = groupConversation + ? groupConversation.attributes.members + : undefined; if (!groupMembers) { return []; @@ -16,3 +13,13 @@ export async function getGroupMembers(groupId: string): Promise> { return groupMembers.map((member: string) => new PubKey(member)); } + +export function isMediumGroup(groupId: PubKey): boolean { + const conversation = ConversationController.get(groupId.key); + + if (!conversation) { + return false; + } + + return Boolean(conversation.isMediumGroup()); +}