From cc6388727353326e210bd592e0fd1b7c877ca92f Mon Sep 17 00:00:00 2001 From: William Grant Date: Thu, 24 Aug 2023 15:18:48 +1000 Subject: [PATCH] fix: remove final instances of legacy type not in UI fixed closed groups being deleteAfterSend incorrectly --- ts/models/conversation.ts | 17 ++++++++--------- ts/models/message.ts | 24 +++++++++++++++--------- ts/receiver/configMessage.ts | 6 +++--- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/ts/models/conversation.ts b/ts/models/conversation.ts index 9a26d4818..7a3dbe5ee 100644 --- a/ts/models/conversation.ts +++ b/ts/models/conversation.ts @@ -117,8 +117,10 @@ import { getSubscriberCountOutsideRedux, } from '../state/selectors/sogsRoomInfo'; // decide it it makes sense to move this to a redux slice? -import { DisappearingMessageConversationType } from '../util/expiringMessages'; -import { ReleasedFeatures } from '../util/releaseFeature'; +import { + DisappearingMessageConversationType, + isLegacyDisappearingModeEnabled, +} from '../util/expiringMessages'; import { markAttributesAsReadIfNeeded } from './messageFactory'; type InMemoryConvoInfos = { @@ -848,9 +850,6 @@ export class ConversationModel extends Backbone.Model { return; } - // We will only support legacy disappearing messages for a short period before disappearing messages v2 is unlocked - const isDisappearingMessagesV2Released = await ReleasedFeatures.checkIsDisappearMessageV2FeatureReleased(); - const isOutgoing = Boolean(!receivedAt); source = source || UserUtils.getOurPubKeyStrFromCache(); @@ -886,10 +885,10 @@ export class ConversationModel extends Backbone.Model { fromSync, }, // TODO legacy messages support will be removed in a future release - expirationType: - expirationType !== 'off' || isDisappearingMessagesV2Released ? expirationType : undefined, - expireTimer: - expirationType !== 'off' || isDisappearingMessagesV2Released ? expireTimer : undefined, + expirationType: isLegacyDisappearingModeEnabled(expirationType) + ? undefined + : expirationType, + expireTimer: isLegacyDisappearingModeEnabled(expirationType) ? undefined : expireTimer, }; if (!message) { diff --git a/ts/models/message.ts b/ts/models/message.ts index 573129b88..458915115 100644 --- a/ts/models/message.ts +++ b/ts/models/message.ts @@ -90,8 +90,8 @@ import { import { ReactionList } from '../types/Reaction'; import { roomHasBlindEnabled } from '../types/sqlSharedTypes'; import { - DisappearingMessageConversationSetting, - DisappearingMessageConversationType, + DisappearingMessageMode, + DisappearingMessageType, DisappearingMessageUpdate, ExpirationTimerOptions, isLegacyDisappearingModeEnabled, @@ -1008,20 +1008,26 @@ export class MessageModel extends Backbone.Model { } // TODO legacy messages support will be removed in a future release - const isLegacyDataMessage = Boolean( + const isLegacyDisappearingDataMessage = Boolean( (dataMessage.expireTimer && dataMessage.expireTimer > -1) || (!content.expirationTimer && dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE) ); - const expirationType: DisappearingMessageConversationType = content.expirationType - ? DisappearingMessageConversationSetting[content.expirationType] - : isLegacyDataMessage - ? DisappearingMessageConversationSetting[3] - : 'off'; - const expirationTimer = isLegacyDataMessage + let expirationType: DisappearingMessageType = DisappearingMessageMode[content.expirationType]; + + if (isLegacyDisappearingDataMessage) { + if (conversation.isMe() || conversation.isClosedGroup()) { + expirationType = 'deleteAfterSend'; + } else { + expirationType = 'deleteAfterRead'; + } + } + + const expirationTimer = isLegacyDisappearingDataMessage ? Number(dataMessage.expireTimer) : content.expirationTimer; + const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp ? Number(content.lastDisappearingMessageChangeTimestamp) : undefined; diff --git a/ts/receiver/configMessage.ts b/ts/receiver/configMessage.ts index 84a2e82db..8b2c46a59 100644 --- a/ts/receiver/configMessage.ts +++ b/ts/receiver/configMessage.ts @@ -567,9 +567,9 @@ async function handleLegacyGroupUpdate(latestEnvelopeTimestamp: number) { ? legacyGroupConvo.get('active_at') : latestEnvelopeTimestamp, expirationType: - !!fromWrapper.disappearingTimerSeconds && fromWrapper.disappearingTimerSeconds === 0 - ? 'off' - : 'deleteAfterSend', + fromWrapper.disappearingTimerSeconds && fromWrapper.disappearingTimerSeconds > 0 + ? 'deleteAfterSend' + : 'off', expireTimer: fromWrapper.disappearingTimerSeconds, };