From 3f59ce1692cb6fc66d3babca28b91756348a1879 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Mon, 22 Feb 2021 09:58:29 +1100 Subject: [PATCH] fix updates of message on message syncing --- js/models/messages.js | 1 + .../outgoing/content/data/ChatMessage.ts | 23 +++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/js/models/messages.js b/js/models/messages.js index 15a2c19f2..bb61ab18d 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -1300,6 +1300,7 @@ // try catch not to be kept try { const syncMessage = libsession.Messages.Outgoing.ChatMessage.buildSyncMessage( + this.id, dataMessage, this.getConversation().id, sentTimestamp diff --git a/ts/session/messages/outgoing/content/data/ChatMessage.ts b/ts/session/messages/outgoing/content/data/ChatMessage.ts index 2a661c2ed..fcd5ad6f4 100644 --- a/ts/session/messages/outgoing/content/data/ChatMessage.ts +++ b/ts/session/messages/outgoing/content/data/ChatMessage.ts @@ -91,18 +91,15 @@ export class ChatMessage extends DataMessage { } public static buildSyncMessage( - dataMessage: SignalService.IDataMessage, + identifier: string, + dataMessage: SignalService.DataMessage, syncTarget: string, sentTimestamp: number ) { - // the dataMessage.profileKey is of type ByteBuffer. We need to make it a Uint8Array - const lokiProfile: any = { - profileKey: new Uint8Array( - (dataMessage.profileKey as any).toArrayBuffer() - ), - }; - - if ((dataMessage as any)?.$type?.name !== 'DataMessage') { + if ( + (dataMessage as any).constructor.name !== 'DataMessage' && + !(dataMessage instanceof DataMessage) + ) { throw new Error( 'Tried to build a sync message from something else than a DataMessage' ); @@ -111,6 +108,13 @@ export class ChatMessage extends DataMessage { if (!sentTimestamp || !isNumber(sentTimestamp)) { throw new Error('Tried to build a sync message without a sentTimestamp'); } + // the dataMessage.profileKey is of type ByteBuffer. We need to make it a Uint8Array + const lokiProfile: any = {}; + if (dataMessage.profileKey?.length) { + lokiProfile.profileKey = new Uint8Array( + (dataMessage.profileKey as any).toArrayBuffer() + ); + } if (dataMessage.profile) { if (dataMessage.profile?.displayName) { @@ -138,6 +142,7 @@ export class ChatMessage extends DataMessage { const preview = (dataMessage.preview as Array) || []; return new ChatMessage({ + identifier, timestamp, attachments, body,