From ceeb9b790a733ae5bb20fe4aa9465aadd4755b85 Mon Sep 17 00:00:00 2001 From: William Grant Date: Mon, 3 Apr 2023 14:09:06 +0200 Subject: [PATCH] fix: finally got all the test cases to pass! removed misMatchedMessage and replaced with shouldDisappearButIsntMessage which is a more explicit check --- ts/receiver/contentMessage.ts | 4 +--- ts/util/expiringMessages.ts | 30 +++++++++--------------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/ts/receiver/contentMessage.ts b/ts/receiver/contentMessage.ts index c8b6c2b80..47f54405d 100644 --- a/ts/receiver/contentMessage.ts +++ b/ts/receiver/contentMessage.ts @@ -417,9 +417,7 @@ export async function innerHandleSwarmContentMessage( // TODO legacy messages support will be removed in a future release if ( expireUpdate?.isDisappearingMessagesV2Released && - (expireUpdate?.isLegacyConversationSettingMessage || - (expireUpdate?.isMismatchedMessage && - content.dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE)) + expireUpdate?.isLegacyConversationSettingMessage ) { window.log.info(`WIP: The legacy message is an expiration timer update. Ignoring it.`); return; diff --git a/ts/util/expiringMessages.ts b/ts/util/expiringMessages.ts index a5067f875..82aebe734 100644 --- a/ts/util/expiringMessages.ts +++ b/ts/util/expiringMessages.ts @@ -35,7 +35,6 @@ export type DisappearingMessageUpdate = { isLegacyConversationSettingMessage?: boolean; isLegacyDataMessage?: boolean; isDisappearingMessagesV2Released?: boolean; - isMismatchedMessage?: boolean; }; export async function destroyMessagesAndUpdateRedux( @@ -310,19 +309,17 @@ export async function checkForExpireUpdate( ? Number(content.lastDisappearingMessageChangeTimestamp) : undefined; - const isMismatchedMessage = - (!isLegacyConversationSettingMessage && - convoToUpdate.get('expirationType') !== 'off' && - convoToUpdate.get('expirationType') !== expirationType) || - (convoToUpdate.get('expireTimer') !== 0 && - convoToUpdate.get('expireTimer') !== expirationTimer); + const shouldDisappearButIsntMessage = + dataMessage.flags !== SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE && + expirationType === 'off' && + expirationTimer === 0 && + convoToUpdate.get('expirationType') !== 'off' && + convoToUpdate.get('expireTimer') !== 0; // 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 && - (isLegacyDataMessage || - isLegacyConversationSettingMessage || - (isLegacyDataMessage && isMismatchedMessage)) + (isLegacyDataMessage || isLegacyConversationSettingMessage || shouldDisappearButIsntMessage) ) { window.log.info(`WIP: received a legacy disappearing message after v2 was released.`); expirationType = convoToUpdate.get('expirationType'); @@ -336,7 +333,6 @@ export async function checkForExpireUpdate( isLegacyConversationSettingMessage, isLegacyDataMessage, isDisappearingMessagesV2Released, - isMismatchedMessage, }; window.log.info(`WIP: checkForExpireUpdate`, expireUpdate); @@ -395,11 +391,7 @@ export function checkHasOutdatedClient( if (convoToUpdate.get('hasOutdatedClient')) { // trigger notice banner - if ( - expireUpdate.isLegacyDataMessage || - expireUpdate.isLegacyConversationSettingMessage || - (expireUpdate.isDisappearingMessagesV2Released && expireUpdate.isMismatchedMessage) - ) { + if (expireUpdate.isLegacyDataMessage || expireUpdate.isLegacyConversationSettingMessage) { if (convoToUpdate.get('hasOutdatedClient') !== outdatedSender) { convoToUpdate.set({ hasOutdatedClient: outdatedSender, @@ -412,11 +404,7 @@ export function checkHasOutdatedClient( } convoToUpdate.commit(); } else { - if ( - expireUpdate.isLegacyDataMessage || - expireUpdate.isLegacyConversationSettingMessage || - (expireUpdate.isDisappearingMessagesV2Released && expireUpdate.isMismatchedMessage) - ) { + if (expireUpdate.isLegacyDataMessage || expireUpdate.isLegacyConversationSettingMessage) { convoToUpdate.set({ hasOutdatedClient: outdatedSender, });