From 07097b029d2b6957f6692e9c12d350dfdd50113d Mon Sep 17 00:00:00 2001 From: William Grant Date: Tue, 19 Sep 2023 13:42:38 +1000 Subject: [PATCH] fix: don't send sync messages for outdated changes --- ts/models/message.ts | 30 +++++++++++++++++------------- ts/session/utils/sync/syncUtils.ts | 22 +++++++++++++++++----- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/ts/models/message.ts b/ts/models/message.ts index 54ceedb20..73c56105c 100644 --- a/ts/models/message.ts +++ b/ts/models/message.ts @@ -1023,23 +1023,27 @@ export class MessageModel extends Backbone.Model { throw new Error('Cannot trigger syncMessage with unknown convo.'); } - // TODO things be broken - // debugger; const expireUpdate = await checkForExpireUpdateInContentMessage(content, conversation); - const syncMessage = buildSyncMessage( - this.id, - dataMessage as SignalService.DataMessage, - conversation.id, - sentTimestamp, - expireUpdate - ); + if (!isEmpty(expireUpdate) && expireUpdate.lastDisappearingMessageChangeTimestamp) { + const syncMessage = buildSyncMessage( + this.id, + dataMessage as SignalService.DataMessage, + conversation.id, + sentTimestamp, + expireUpdate + ); - await getMessageQueue().sendSyncMessage({ - namespace: SnodeNamespaces.UserMessages, - message: syncMessage, - }); + await getMessageQueue().sendSyncMessage({ + namespace: SnodeNamespaces.UserMessages, + message: syncMessage, + }); + } + } else { + // NOTE if the expireUpdate is not defined then this settings is most likely out of date so we should not sync it + return; } + this.set({ sentSync: true, }); diff --git a/ts/session/utils/sync/syncUtils.ts b/ts/session/utils/sync/syncUtils.ts index a6b8f612e..b27d1b4dc 100644 --- a/ts/session/utils/sync/syncUtils.ts +++ b/ts/session/utils/sync/syncUtils.ts @@ -386,11 +386,23 @@ export const buildSyncMessage = ( } // don't include our profileKey on syncing message. This is to be done by a ConfigurationMessage now const timestamp = _.toNumber(sentTimestamp); - if (dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE) { - if (!isEmpty(expireUpdate) && expireUpdate.lastDisappearingMessageChangeTimestamp) { - return buildSyncExpireTimerMessage(identifier, expireUpdate, timestamp, syncTarget); - } - window.log.warn('WIP: Building Sync Expire Timer Message failed', dataMessage, expireUpdate); + + if ( + dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE && + !isEmpty(expireUpdate) && + expireUpdate.lastDisappearingMessageChangeTimestamp + ) { + const syncExpireTimerMessage = buildSyncExpireTimerMessage( + identifier, + expireUpdate, + timestamp, + syncTarget + ); + window.log.warn( + `WIP: buildSyncMessage: \nsyncExpireTimerMessage: ${JSON.stringify(syncExpireTimerMessage)}` + ); + return syncExpireTimerMessage; } + return buildSyncVisibleMessage(identifier, dataMessage, timestamp, syncTarget); };