From d4dc8aa2ed19acbdcd8f8d4e404d471d9d3b384c Mon Sep 17 00:00:00 2001 From: Mikunj Date: Tue, 30 Jun 2020 15:19:36 +1000 Subject: [PATCH] remove SyncMessageUtils.from --- js/models/conversations.js | 27 ++++---- .../outgoing/content/data/DataMessage.ts | 4 +- .../outgoing/content/sync/SentSyncMessage.ts | 6 +- ts/session/utils/SyncMessageUtils.ts | 69 ++++--------------- 4 files changed, 36 insertions(+), 70 deletions(-) diff --git a/js/models/conversations.js b/js/models/conversations.js index 7b9908439..53d760458 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -1856,7 +1856,7 @@ const groupUpdateMessage = new libsession.Messages.Outgoing.ClosedGroupUpdateMessage( updateParams ); - await this.sendClosedGroupMessage(groupUpdateMessage); + await this.sendClosedGroupMessageWithSync(groupUpdateMessage); }, sendGroupInfo(recipient) { @@ -1924,24 +1924,23 @@ quitGroup ); - await this.sendClosedGroupMessage(quitGroupMessage); + await this.sendClosedGroupMessageWithSync(quitGroupMessage); this.updateTextInputState(); } }, - async sendClosedGroupMessage(message) { - const { ClosedGroupMessage, ClosedGroupChatMessage } = libsession.Messages.Outgoing; - if ( - !(message instanceof ClosedGroupMessage) - ) { + async sendClosedGroupMessageWithSync(message) { + const { + ClosedGroupMessage, + ClosedGroupChatMessage, + } = libsession.Messages.Outgoing; + if (!(message instanceof ClosedGroupMessage)) { throw new Error('Invalid closed group message.'); } // Sync messages for Chat Messages need to be constructed after confirming send was successful. - if ( - message instanceof ClosedGroupChatMessage - ) { + if (message instanceof ClosedGroupChatMessage) { throw new Error( 'ClosedGroupChatMessage should be constructed manually and sent' ); @@ -1950,9 +1949,13 @@ try { await libsession.getMessageQueue().sendToGroup(message); - const syncMessage = libsession.Utils.SyncMessageUtils.fromClosedGroupMessage( - message + const syncMessage = libsession.Utils.SyncMessageUtils.getSentSyncMessage( + { + destination: message.groupId, + message, + } ); + if (syncMessage) { await libsession.getMessageQueue().sendSyncMessage(syncMessage); } diff --git a/ts/session/messages/outgoing/content/data/DataMessage.ts b/ts/session/messages/outgoing/content/data/DataMessage.ts index 869a3b736..e65f35763 100644 --- a/ts/session/messages/outgoing/content/data/DataMessage.ts +++ b/ts/session/messages/outgoing/content/data/DataMessage.ts @@ -2,11 +2,11 @@ import { ContentMessage } from '../ContentMessage'; import { SignalService } from '../../../../../protobuf'; export abstract class DataMessage extends ContentMessage { + public abstract dataProto(): SignalService.DataMessage; + protected contentProto(): SignalService.Content { return new SignalService.Content({ dataMessage: this.dataProto(), }); } - - protected abstract dataProto(): SignalService.DataMessage; } diff --git a/ts/session/messages/outgoing/content/sync/SentSyncMessage.ts b/ts/session/messages/outgoing/content/sync/SentSyncMessage.ts index a595b4ed7..328fd9958 100644 --- a/ts/session/messages/outgoing/content/sync/SentSyncMessage.ts +++ b/ts/session/messages/outgoing/content/sync/SentSyncMessage.ts @@ -8,7 +8,7 @@ interface SentSyncMessageParams extends MessageParams { expirationStartTimestamp?: number; sentTo?: Array; unidentifiedDeliveries?: Array; - destination?: PubKey; + destination?: PubKey | string; } export class SentSyncMessage extends SyncMessage { @@ -25,7 +25,9 @@ export class SentSyncMessage extends SyncMessage { this.expirationStartTimestamp = params.expirationStartTimestamp; this.sentTo = params.sentTo; this.unidentifiedDeliveries = params.unidentifiedDeliveries; - this.destination = params.destination; + + const { destination } = params; + this.destination = destination ? PubKey.cast(destination) : undefined; } protected syncProto(): SignalService.SyncMessage { diff --git a/ts/session/utils/SyncMessageUtils.ts b/ts/session/utils/SyncMessageUtils.ts index ced128015..33adb6b1c 100644 --- a/ts/session/utils/SyncMessageUtils.ts +++ b/ts/session/utils/SyncMessageUtils.ts @@ -1,71 +1,32 @@ import * as _ from 'lodash'; import { UserUtil } from '../../util/'; import { getAllConversations } from '../../../js/modules/data'; +import { MultiDeviceProtocol } from '../protocols'; +import ByteBuffer from 'bytebuffer'; import { - ClosedGroupChatMessage, - ClosedGroupMessage, - ClosedGroupRequestInfoMessage, ContentMessage, - ReadReceiptMessage, + DataMessage, SentSyncMessage, - SyncMessage, - SyncReadMessage, } from '../messages/outgoing'; -import { MultiDeviceProtocol } from '../protocols'; -import ByteBuffer from 'bytebuffer'; import { PubKey } from '../types'; -import { SignalService } from '../../protobuf'; - -export function from( - message: ContentMessage, - destination: string | PubKey -): SyncMessage | undefined { - if (message instanceof SyncMessage) { - return message; - } - - if (message instanceof ClosedGroupMessage) { - return fromClosedGroupMessage(message); - } - - if (message instanceof ReadReceiptMessage) { - const pubKey = PubKey.cast(destination); - const read = message.timestamps.map(timestamp => ({ - sender: pubKey.key, - timestamp, - })); - - return new SyncReadMessage({ - timestamp: Date.now(), - readMessages: read, - }); - } - - return undefined; -} - -export function fromClosedGroupMessage( - message: ClosedGroupMessage -): SyncMessage | undefined { - // Sync messages for ClosedGroupChatMessage need to be built manually - // This is because it needs the `expireStartTimestamp` field. - if ( - message instanceof ClosedGroupRequestInfoMessage || - message instanceof ClosedGroupChatMessage - ) { - return undefined; - } - const pubKey = PubKey.cast(message.groupId); - const content = SignalService.Content.decode(message.plainTextBuffer()); - if (!content.dataMessage) { +export function getSentSyncMessage(params: { + message: ContentMessage; + expirationStartTimestamp?: number; + sentTo?: Array; + destination: PubKey | string; +}): SentSyncMessage | undefined { + if (!(params.message instanceof DataMessage)) { return undefined; } + const pubKey = PubKey.cast(params.destination); return new SentSyncMessage({ - timestamp: message.timestamp, + timestamp: Date.now(), destination: pubKey, - dataMessage: content.dataMessage, + dataMessage: params.message.dataProto(), + expirationStartTimestamp: params.expirationStartTimestamp, + sentTo: params.sentTo, }); }