From 23998065ea14d952b7e0646c415835750cb1e8da Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Mon, 20 Nov 2023 14:39:51 +1100 Subject: [PATCH] fix: address PR reviews --- ts/models/conversation.ts | 4 ++-- ts/receiver/dataMessage.ts | 1 + ts/session/disappearing_messages/index.ts | 24 +++++++++++++---------- ts/session/sending/MessageQueue.ts | 18 ++++++++--------- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/ts/models/conversation.ts b/ts/models/conversation.ts index 534428aa3..901066523 100644 --- a/ts/models/conversation.ts +++ b/ts/models/conversation.ts @@ -847,11 +847,11 @@ export class ConversationModel extends Backbone.Model { if ( this.getLastDisappearingMessageChangeTimestamp() && lastDisappearingMessageChangeTimestamp && - this.getLastDisappearingMessageChangeTimestamp() >= lastDisappearingMessageChangeTimestamp + this.getLastDisappearingMessageChangeTimestamp() > lastDisappearingMessageChangeTimestamp ) { window.log.debug( '[updateExpireTimer] This is an outdated disappearing message setting', - `fromSync: ${fromSync}${existingMessage ? ` messageId: ${existingMessage.get('id')}` : ''}` + `fromSync:${fromSync} ${existingMessage ? ` messageId: ${existingMessage.get('id')}` : ''}` ); return false; } diff --git a/ts/receiver/dataMessage.ts b/ts/receiver/dataMessage.ts index d5970afc7..3e3cc1a82 100644 --- a/ts/receiver/dataMessage.ts +++ b/ts/receiver/dataMessage.ts @@ -260,6 +260,7 @@ export async function handleSwarmDataMessage( msgModel = DisappearingMessages.getMessageReadyToDisappear( convoToAddMessageTo, msgModel, + cleanDataMessage.flags, expireUpdate ); } diff --git a/ts/session/disappearing_messages/index.ts b/ts/session/disappearing_messages/index.ts index 9c4a1898b..3136d9ff0 100644 --- a/ts/session/disappearing_messages/index.ts +++ b/ts/session/disappearing_messages/index.ts @@ -321,7 +321,7 @@ async function checkForExpireUpdateInContentMessage( convoToUpdate.getLastDisappearingMessageChangeTimestamp() > lastDisappearingMessageChangeTimestamp) || (!isOutgoing && - convoToUpdate.getLastDisappearingMessageChangeTimestamp() >= + convoToUpdate.getLastDisappearingMessageChangeTimestamp() > lastDisappearingMessageChangeTimestamp)) ) { window.log.debug( @@ -448,20 +448,20 @@ function checkForExpiringOutgoingMessage(message: MessageModel, location?: strin function getMessageReadyToDisappear( conversationModel: ConversationModel, messageModel: MessageModel, + messageFlags: number, expireUpdate?: DisappearingMessageUpdate ) { - if (!expireUpdate) { - // window.log.debug( - // `[getMessageReadyToDisappear] called getMessageReadyToDisappear() without an expireUpdate` - // ); - return messageModel; - } - if (conversationModel.isPublic()) { throw Error( `getMessageReadyToDisappear() Disappearing messages aren't supported in communities` ); } + if (!expireUpdate) { + window.log.debug( + `[getMessageReadyToDisappear] called getMessageReadyToDisappear() without an expireUpdate` + ); + return messageModel; + } const { expirationType, @@ -477,13 +477,17 @@ function getMessageReadyToDisappear( }); // This message is an ExpirationTimerUpdate - if (lastDisappearingMessageChangeTimestamp || isLegacyConversationSettingMessage) { + if ( + (lastDisappearingMessageChangeTimestamp || isLegacyConversationSettingMessage) && + messageFlags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE + ) { const previousExpirationMode = conversationModel.getExpirationMode(); const previousExpirationTimer = conversationModel.getExpireTimer(); const shouldUsePreviousExpiration = expirationType === 'unknown' && previousExpirationMode !== 'off' && - previousExpirationMode !== 'legacy'; + previousExpirationMode !== 'legacy' && + messageFlags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE; if (shouldUsePreviousExpiration) { messageModel.set({ diff --git a/ts/session/sending/MessageQueue.ts b/ts/session/sending/MessageQueue.ts index 98533d714..ee9f057ee 100644 --- a/ts/session/sending/MessageQueue.ts +++ b/ts/session/sending/MessageQueue.ts @@ -1,28 +1,25 @@ import { AbortController } from 'abort-controller'; -import { PendingMessageCache } from './PendingMessageCache'; -import { JobQueue, MessageUtils, UserUtils } from '../utils'; -import { PubKey, RawMessage } from '../types'; import { MessageSender } from '.'; -import { ClosedGroupMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupMessage'; import { ConfigurationMessage } from '../messages/outgoing/controlMessage/ConfigurationMessage'; +import { ClosedGroupMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupMessage'; import { ClosedGroupNameChangeMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupNameChangeMessage'; +import { PubKey, RawMessage } from '../types'; +import { JobQueue, MessageUtils, UserUtils } from '../utils'; +import { PendingMessageCache } from './PendingMessageCache'; -import { ClosedGroupMemberLeftMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupMemberLeftMessage'; -import { MessageSentHandler } from './MessageSentHandler'; import { ContentMessage } from '../messages/outgoing'; import { ExpirationTimerUpdateMessage } from '../messages/outgoing/controlMessage/ExpirationTimerUpdateMessage'; import { ClosedGroupAddedMembersMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupAddedMembersMessage'; import { ClosedGroupEncryptionPairMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupEncryptionPairMessage'; +import { ClosedGroupMemberLeftMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupMemberLeftMessage'; import { ClosedGroupNewMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupNewMessage'; import { ClosedGroupRemovedMembersMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupRemovedMembersMessage'; import { ClosedGroupVisibleMessage } from '../messages/outgoing/visibleMessage/ClosedGroupVisibleMessage'; import { SyncMessageType } from '../utils/sync/syncUtils'; +import { MessageSentHandler } from './MessageSentHandler'; import { OpenGroupRequestCommonType } from '../apis/open_group_api/opengroupV2/ApiUtil'; -import { OpenGroupVisibleMessage } from '../messages/outgoing/visibleMessage/OpenGroupVisibleMessage'; -import { UnsendMessage } from '../messages/outgoing/controlMessage/UnsendMessage'; -import { CallMessage } from '../messages/outgoing/controlMessage/CallMessage'; import { OpenGroupMessageV2 } from '../apis/open_group_api/opengroupV2/OpenGroupMessageV2'; import { sendSogsReactionOnionV4 } from '../apis/open_group_api/sogsv3/sogsV3SendReaction'; import { @@ -30,7 +27,10 @@ import { SnodeNamespacesGroup, SnodeNamespacesUser, } from '../apis/snode_api/namespaces'; +import { CallMessage } from '../messages/outgoing/controlMessage/CallMessage'; import { SharedConfigMessage } from '../messages/outgoing/controlMessage/SharedConfigMessage'; +import { UnsendMessage } from '../messages/outgoing/controlMessage/UnsendMessage'; +import { OpenGroupVisibleMessage } from '../messages/outgoing/visibleMessage/OpenGroupVisibleMessage'; type ClosedGroupMessageType = | ClosedGroupVisibleMessage