diff --git a/ts/session/messages/outgoing/content/sync/index.ts b/ts/session/messages/outgoing/content/sync/index.ts index 804f4f561..53cb667a4 100644 --- a/ts/session/messages/outgoing/content/sync/index.ts +++ b/ts/session/messages/outgoing/content/sync/index.ts @@ -1,3 +1 @@ -import { SyncMessage } from './SyncMessage'; - -export { SyncMessage }; +export * from './SyncMessage'; diff --git a/ts/session/sending/MessageQueue.ts b/ts/session/sending/MessageQueue.ts index c53345fa9..9980195a2 100644 --- a/ts/session/sending/MessageQueue.ts +++ b/ts/session/sending/MessageQueue.ts @@ -102,7 +102,13 @@ export class MessageQueue implements MessageQueueInterface { // Open groups if (message instanceof OpenGroupMessage) { // No queue needed for Open Groups; send directly - await MessageSender.sendToOpenGroup(message); + + try { + await MessageSender.sendToOpenGroup(message); + this.events.emit('success', message); + } catch (e) { + this.events.emit('fail', message, e); + } return true; } @@ -113,7 +119,7 @@ export class MessageQueue implements MessageQueueInterface { public async sendSyncMessage(message: ContentMessage, sendTo: Array) { // Sync with our devices const promises = sendTo.map(async device => { - const syncMessage = await SyncMessageUtils.from(message); + const syncMessage = SyncMessageUtils.from(message); return this.process(device, syncMessage); }); @@ -124,9 +130,10 @@ export class MessageQueue implements MessageQueueInterface { public async processPending(device: PubKey) { const messages = this.pendingMessageCache.getForDevice(device); + // TODO: Simpify the isMediumGroup check to not rely on ANY window objects + // const isMediumGroup = messages.some(m => m instanceof MediumGroupMessage); + const isMediumGroup = false; const hasSession = SessionProtocol.hasSession(device); - const conversation = ConversationController.get(device.key); - const isMediumGroup = conversation.isMediumGroup(); if (!isMediumGroup && !hasSession) { await SessionProtocol.sendSessionRequestIfNeeded(device); @@ -160,7 +167,13 @@ export class MessageQueue implements MessageQueueInterface { } private async process(device: PubKey, message?: ContentMessage) { - if (!message || message instanceof SessionRequestMessage) { + if (!message) { + return; + } + + if (message instanceof SessionRequestMessage) { + void SessionProtocol.sendSessionRequest(message, device); + return; } diff --git a/ts/session/sending/MessageQueueInterface.ts b/ts/session/sending/MessageQueueInterface.ts index 9f58357a9..c3ee606aa 100644 --- a/ts/session/sending/MessageQueueInterface.ts +++ b/ts/session/sending/MessageQueueInterface.ts @@ -10,8 +10,8 @@ import { PubKey } from '../types'; type GroupMessageType = OpenGroupMessage | ClosedGroupMessage; export interface MessageQueueInterfaceEvents { - success: (message: RawMessage) => void; - fail: (message: RawMessage, error: Error) => void; + success: (message: RawMessage | OpenGroupMessage) => void; + fail: (message: RawMessage | OpenGroupMessage, error: Error) => void; } export interface MessageQueueInterface { diff --git a/ts/session/utils/SyncMessageUtils.ts b/ts/session/utils/SyncMessageUtils.ts index e14c79c24..92c1116c0 100644 --- a/ts/session/utils/SyncMessageUtils.ts +++ b/ts/session/utils/SyncMessageUtils.ts @@ -8,9 +8,7 @@ import { ConversationController, Whisper } from '../../window'; import { ContentMessage, SyncMessage } from '../messages/outgoing'; -export async function from( - message: ContentMessage -): Promise { +export function from(message: ContentMessage): SyncMessage | undefined { // const { timestamp, identifier } = message; // Stubbed for now @@ -20,9 +18,9 @@ export async function from( export async function canSync(message: ContentMessage): Promise { // This function should be agnostic to the device; it shouldn't need // to know about the recipient - // return Boolean(from(message)); + // Stubbed for now - return true; + return Boolean(from(message)); } export async function getSyncContacts(): Promise | undefined> { diff --git a/ts/test/test-utils/testUtils.ts b/ts/test/test-utils/testUtils.ts index 4cfbc50ac..481a21e5a 100644 --- a/ts/test/test-utils/testUtils.ts +++ b/ts/test/test-utils/testUtils.ts @@ -67,3 +67,4 @@ export function generateChatMessage(): ChatMessage { preview: undefined, }); } +