From a65f02a8074de942a97d9ac0627b7daee09290a5 Mon Sep 17 00:00:00 2001 From: William Grant Date: Thu, 14 Sep 2023 17:20:36 +1000 Subject: [PATCH] feat: use checkForExpireUpdateInContentMessage on sync messages --- ts/models/message.ts | 34 ++++-------------------------- ts/session/utils/sync/syncUtils.ts | 6 +++--- 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/ts/models/message.ts b/ts/models/message.ts index 79e0c92d8..14e548d1b 100644 --- a/ts/models/message.ts +++ b/ts/models/message.ts @@ -90,12 +90,10 @@ import { import { ReactionList } from '../types/Reaction'; import { roomHasBlindEnabled } from '../types/sqlSharedTypes'; import { - DisappearingMessageMode, - DisappearingMessageType, - DisappearingMessageUpdate, ExpirationTimerOptions, setExpirationStartTimestamp, changeToDisappearingMessageConversationType, + checkForExpireUpdateInContentMessage, } from '../util/expiringMessages'; import { LinkPreviews } from '../util/linkPreviews'; import { Notifications } from '../util/notifications'; @@ -1025,40 +1023,16 @@ export class MessageModel extends Backbone.Model { throw new Error('Cannot trigger syncMessage with unknown convo.'); } - // TODO legacy messages support will be removed in a future release - const isLegacyDisappearingDataMessage = Boolean( - (dataMessage.expireTimer && dataMessage.expireTimer > -1) || - (!content.expirationTimer && - dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE) - ); - - const expirationTimer = isLegacyDisappearingDataMessage - ? Number(dataMessage.expireTimer) - : content.expirationTimer; - - const expirationType: DisappearingMessageType = - DisappearingMessageMode[content.expirationType]; - - const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp - ? Number(content.lastDisappearingMessageChangeTimestamp) - : undefined; - - let expireUpdate: DisappearingMessageUpdate | null = null; - if (expirationType && expirationTimer !== undefined) { - expireUpdate = { - expirationType, - expirationTimer, - lastDisappearingMessageChangeTimestamp, - }; - } + const expireUpdate = await checkForExpireUpdateInContentMessage(content, conversation); const syncMessage = buildSyncMessage( this.id, dataMessage as SignalService.DataMessage, conversation.id, sentTimestamp, - expireUpdate || undefined + expireUpdate ); + await getMessageQueue().sendSyncMessage({ namespace: SnodeNamespaces.UserMessages, message: syncMessage, diff --git a/ts/session/utils/sync/syncUtils.ts b/ts/session/utils/sync/syncUtils.ts index f82a23b54..a932bb853 100644 --- a/ts/session/utils/sync/syncUtils.ts +++ b/ts/session/utils/sync/syncUtils.ts @@ -1,5 +1,5 @@ import { v4 as uuidv4 } from 'uuid'; -import _, { isEmpty } from 'lodash'; +import _ from 'lodash'; import { UserUtils } from '..'; import { getMessageQueue } from '../..'; import { Data } from '../../../data/data'; @@ -370,7 +370,7 @@ export const buildSyncMessage = ( data: DataMessage | SignalService.DataMessage, syncTarget: string, sentTimestamp: number, - expireUpdate?: DisappearingMessageUpdate + expireUpdate: DisappearingMessageUpdate ): VisibleMessage | ExpirationTimerUpdateMessage => { if ( (data as any).constructor.name !== 'DataMessage' && @@ -387,7 +387,7 @@ 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 (expireUpdate && !isEmpty(expireUpdate)) { + if (expireUpdate.lastDisappearingMessageChangeTimestamp) { return buildSyncExpireTimerMessage(identifier, expireUpdate, timestamp, syncTarget); } window.log.warn('WIP: Building Sync Expire Timer Message failed', dataMessage, expireUpdate);