From 8dc7d48c522094e0a972850e2fa8adf9de588448 Mon Sep 17 00:00:00 2001 From: William Grant Date: Mon, 3 Apr 2023 14:09:06 +0200 Subject: [PATCH] feat: renamed isLegacyMessage to isLegacyDataMessage all works except modern to modern stage 2 --- ts/models/message.ts | 6 +++--- ts/receiver/queuedJob.ts | 13 +++++++++---- ts/util/expiringMessages.ts | 33 ++++++++++++++++++++------------- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/ts/models/message.ts b/ts/models/message.ts index 9d36b9688..2bdd3f32f 100644 --- a/ts/models/message.ts +++ b/ts/models/message.ts @@ -1098,7 +1098,7 @@ export class MessageModel extends Backbone.Model { } // TODO legacy messages support will be removed in a future release - const isLegacyMessage = Boolean( + const isLegacyDataMessage = Boolean( (dataMessage.expireTimer && dataMessage.expireTimer > -1) || (!content.expirationTimer && dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE) @@ -1106,10 +1106,10 @@ export class MessageModel extends Backbone.Model { const expirationType = content.expirationType ? DisappearingMessageConversationSetting[content.expirationType] - : isLegacyMessage + : isLegacyDataMessage ? DisappearingMessageConversationSetting[3] : 'off'; - const expirationTimer = isLegacyMessage + const expirationTimer = isLegacyDataMessage ? Number(dataMessage.expireTimer) : content.expirationTimer; const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp diff --git a/ts/receiver/queuedJob.ts b/ts/receiver/queuedJob.ts index 89c63570d..0037fa026 100644 --- a/ts/receiver/queuedJob.ts +++ b/ts/receiver/queuedJob.ts @@ -351,8 +351,13 @@ export async function handleMessageJob( } if (messageModel.isExpirationTimerUpdate()) { + // TODO legacy messages support will be removed in a future release + // NOTE if we turn off disappearing messages from a legacy client expirationTimerUpdate can be undefined but the flags value is correctly set const expirationTimerUpdate = messageModel.get('expirationTimerUpdate'); - if (!expirationTimerUpdate || isEmpty(expirationTimerUpdate)) { + if ( + messageModel.get('flags') !== SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE && + (!expirationTimerUpdate || isEmpty(expirationTimerUpdate)) + ) { window.log.info( `WIP: There is a problem with the expiration timer update`, messageModel, @@ -361,10 +366,10 @@ export async function handleMessageJob( return; } - const expirationType = expirationTimerUpdate.expirationType || 'off'; - const expireTimer = expirationTimerUpdate.expireTimer; + const expirationType = expirationTimerUpdate?.expirationType || 'off'; + const expireTimer = expirationTimerUpdate?.expireTimer || 0; const lastDisappearingMessageChangeTimestamp = - expirationTimerUpdate.lastDisappearingMessageChangeTimestamp || getNowWithNetworkOffset(); + expirationTimerUpdate?.lastDisappearingMessageChangeTimestamp || getNowWithNetworkOffset(); // Compare mode and timestamp const oldTypeValue = conversation.get('expirationType'); diff --git a/ts/util/expiringMessages.ts b/ts/util/expiringMessages.ts index e039ec79e..a5067f875 100644 --- a/ts/util/expiringMessages.ts +++ b/ts/util/expiringMessages.ts @@ -33,7 +33,7 @@ export type DisappearingMessageUpdate = { lastDisappearingMessageChangeTimestamp?: number; // TODO legacy messages support will be removed in a future release isLegacyConversationSettingMessage?: boolean; - isLegacyMessage?: boolean; + isLegacyDataMessage?: boolean; isDisappearingMessagesV2Released?: boolean; isMismatchedMessage?: boolean; }; @@ -283,27 +283,32 @@ export async function checkForExpireUpdate( convoToUpdate: ConversationModel, content: SignalService.Content ): Promise { + // debugger; const dataMessage = content.dataMessage as SignalService.DataMessage; // We will only support legacy disappearing messages for a short period before disappearing messages v2 is unlocked const isDisappearingMessagesV2Released = await checkIsFeatureReleased('Disappearing Messages V2'); const isLegacyContentMessage = checkIsLegacyContentMessage(content); - const isLegacyMessage = Boolean( + const isLegacyDataMessage = Boolean( isLegacyContentMessage && checkIsLegacyDataMessage(dataMessage as SignalService.DataMessage) ); + const isLegacyConversationSettingMessage = + isLegacyContentMessage && + isLegacyDataMessage && + dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE; - let expirationTimer = isLegacyMessage ? Number(dataMessage.expireTimer) : content.expirationTimer; + let expirationTimer = isLegacyDataMessage + ? Number(dataMessage.expireTimer) + : content.expirationTimer; let expirationType = expirationTimer > 0 - ? DisappearingMessageConversationSetting[isLegacyContentMessage ? 3 : content.expirationType] + ? DisappearingMessageConversationSetting[ + !isDisappearingMessagesV2Released || isLegacyContentMessage ? 3 : content.expirationType + ] : DisappearingMessageConversationSetting[0]; const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp ? Number(content.lastDisappearingMessageChangeTimestamp) : undefined; - const isLegacyConversationSettingMessage = - isLegacyContentMessage && - isLegacyMessage && - dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE; const isMismatchedMessage = (!isLegacyConversationSettingMessage && @@ -315,9 +320,9 @@ export async function checkForExpireUpdate( // If it is a legacy message and disappearing messages v2 is released then we ignore it and use the local client's conversation settings if ( isDisappearingMessagesV2Released && - (isLegacyMessage || + (isLegacyDataMessage || isLegacyConversationSettingMessage || - (!isLegacyConversationSettingMessage && isMismatchedMessage)) + (isLegacyDataMessage && isMismatchedMessage)) ) { window.log.info(`WIP: received a legacy disappearing message after v2 was released.`); expirationType = convoToUpdate.get('expirationType'); @@ -329,11 +334,13 @@ export async function checkForExpireUpdate( expirationTimer, lastDisappearingMessageChangeTimestamp, isLegacyConversationSettingMessage, - isLegacyMessage, + isLegacyDataMessage, isDisappearingMessagesV2Released, isMismatchedMessage, }; + window.log.info(`WIP: checkForExpireUpdate`, expireUpdate); + return expireUpdate; } @@ -389,7 +396,7 @@ export function checkHasOutdatedClient( if (convoToUpdate.get('hasOutdatedClient')) { // trigger notice banner if ( - expireUpdate.isLegacyMessage || + expireUpdate.isLegacyDataMessage || expireUpdate.isLegacyConversationSettingMessage || (expireUpdate.isDisappearingMessagesV2Released && expireUpdate.isMismatchedMessage) ) { @@ -406,7 +413,7 @@ export function checkHasOutdatedClient( convoToUpdate.commit(); } else { if ( - expireUpdate.isLegacyMessage || + expireUpdate.isLegacyDataMessage || expireUpdate.isLegacyConversationSettingMessage || (expireUpdate.isDisappearingMessagesV2Released && expireUpdate.isMismatchedMessage) ) {