From bb6eb3e84e4537f5d1f7da83a51848f56d144ff5 Mon Sep 17 00:00:00 2001 From: William Grant Date: Mon, 11 Sep 2023 17:01:14 +1000 Subject: [PATCH] feat: fixed 1-1s and added more logging --- ts/models/conversation.ts | 27 +++++++++++--- ts/models/message.ts | 2 + ts/receiver/configMessage.ts | 4 +- ts/receiver/queuedJob.ts | 4 ++ ts/session/sending/MessageSentHandler.ts | 4 ++ .../utils/libsession/libsession_utils.ts | 1 + ts/util/expiringMessages.ts | 37 ++++++++----------- 7 files changed, 49 insertions(+), 30 deletions(-) diff --git a/ts/models/conversation.ts b/ts/models/conversation.ts index 302619bbe..04a8c56bd 100644 --- a/ts/models/conversation.ts +++ b/ts/models/conversation.ts @@ -810,7 +810,7 @@ export class ConversationModel extends Backbone.Model { shouldCommit = true, existingMessage, }: { - providedExpirationType: DisappearingMessageConversationType; + providedExpirationType?: DisappearingMessageConversationType; providedExpireTimer?: number; providedChangeTimestamp: number; providedSource?: string; @@ -838,7 +838,11 @@ export class ConversationModel extends Backbone.Model { if ( this.get('lastDisappearingMessageChangeTimestamp') > lastDisappearingMessageChangeTimestamp ) { - window.log.info('WIP: updateExpireTimer() This is an outdated disappearing message setting'); + window.log.info( + 'WIP: updateExpireTimer() This is an outdated disappearing message setting', + `fromConfigMessage = ${fromConfigMessage}`, + `fromSync: ${fromSync}` + ); return; } @@ -877,6 +881,7 @@ export class ConversationModel extends Backbone.Model { let message: MessageModel | undefined = existingMessage || undefined; const messageExpirationType = changeToDisappearingMessageType(this, expirationType); + window.log.debug(`WIP: updateExpireTimer() messageExpirationType: ${messageExpirationType}`); // we don't have info about who made the change and when, when we get a change from a config message, so do not add a control message // TODO NOTE We might not show it in the UI but still need to process it using the senttimestamp as the lastchange timestamp for config messages @@ -925,7 +930,7 @@ export class ConversationModel extends Backbone.Model { } // if change was made remotely, don't send it to the contact/group - if (receivedAt || fromSync || fromConfigMessage) { + if (fromSync || fromConfigMessage) { window.log.debug( `WIP: updateExpireTimer() Not sending an ExpireTimerUpdate message because the change was made remotely receivedAt:${receivedAt} fromSync:${fromSync} fromConfigMessage:${fromConfigMessage} ` ); @@ -948,17 +953,22 @@ export class ConversationModel extends Backbone.Model { } const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdate); + window.log.debug( - `WIP: Sending ExpirationTimerUpdate message to Note to Self expirationTimerMessage:${JSON.stringify( - expirationTimerMessage - )}` + `WIP: updateExpireTimer() isMe() expirationTimerMessage`, + JSON.stringify(expirationTimerMessage) ); + await message?.sendSyncMessageOnly(expirationTimerMessage); return; } if (this.isPrivate()) { const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdate); + window.log.debug( + `WIP: updateExpireTimer() isPrivate() expirationTimerMessage`, + JSON.stringify(expirationTimerMessage) + ); const pubkey = new PubKey(this.get('id')); await getMessageQueue().sendToPubKey( pubkey, @@ -975,6 +985,11 @@ export class ConversationModel extends Backbone.Model { const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdateForGroup); + window.log.debug( + `WIP: updateExpireTimer() isClosedGroup() expirationTimerMessage`, + JSON.stringify(expirationTimerMessage) + ); + await getMessageQueue().sendToGroup({ message: expirationTimerMessage, namespace: SnodeNamespaces.ClosedGroupMessage, diff --git a/ts/models/message.ts b/ts/models/message.ts index 3f3f29a9d..79e0c92d8 100644 --- a/ts/models/message.ts +++ b/ts/models/message.ts @@ -1126,6 +1126,7 @@ export class MessageModel extends Backbone.Model { } public markMessageReadNoCommit(readAt: number) { + window.log.debug(`WIP: markMessageReadNoCommit ${this.idForLogging()}`, this); this.set({ unread: READ_MESSAGE_STATE.read }); const convo = this.getConversation(); @@ -1134,6 +1135,7 @@ export class MessageModel extends Backbone.Model { const expireTimer = this.get('expireTimer'); if (canBeDeleteAfterRead && expirationType && expireTimer > 0) { + window.log.debug(`WIP: markMessageReadNoCommit ${this.idForLogging()} is deleteAfterRead`); const expirationMode = changeToDisappearingMessageConversationType( convo, expirationType, diff --git a/ts/receiver/configMessage.ts b/ts/receiver/configMessage.ts index d70030d0c..59bdefd61 100644 --- a/ts/receiver/configMessage.ts +++ b/ts/receiver/configMessage.ts @@ -386,8 +386,8 @@ async function handleContactsUpdate(result: IncomingConfResult): Promise 0 - ? DisappearingMessageConversationSetting[ - !isDisappearingMessagesV2Released || isLegacyContentMessage - ? changeToDisappearingMessageType(convoToUpdate) === 'deleteAfterRead' - ? 1 - : 2 - : content.expirationType - ] - : DisappearingMessageConversationSetting[0]; + // NOTE This starts are a DisappearingMessageConversationType but we will convert it to a DisappearingMessageType for the final return + let expirationMode: any = changeToDisappearingMessageConversationType( + convoToUpdate, + DisappearingMessageMode[content.expirationType], + expirationTimer + ); const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp ? Number(content.lastDisappearingMessageChangeTimestamp) @@ -410,7 +405,7 @@ export async function checkForExpireUpdateInContentMessage( // TODO should review this const shouldDisappearButIsntMessage = dataMessage.flags !== SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE && - expirationType === 'off' && + expirationMode === 'off' && expirationTimer === 0 && convoToUpdate.get('expirationType') !== 'off' && convoToUpdate.get('expireTimer') !== 0; @@ -423,15 +418,16 @@ export async function checkForExpireUpdateInContentMessage( convoToUpdate.get('expirationType') !== 'off' ) { if ( - expirationType !== convoToUpdate.get('expirationType') || + expirationMode !== convoToUpdate.get('expirationType') || expirationTimer !== convoToUpdate.get('expireTimer') ) { window.log.debug( 'WIP: Received a legacy disappearing message before v2 was released without values set. Using the conversation settings.', - content + content, + convoToUpdate ); expirationTimer = convoToUpdate.get('expireTimer'); - expirationType = changeToDisappearingMessageType( + expirationMode = changeToDisappearingMessageType( convoToUpdate, convoToUpdate.get('expirationType') ); @@ -443,19 +439,16 @@ export async function checkForExpireUpdateInContentMessage( isDisappearingMessagesV2Released && (isLegacyDataMessage || isLegacyConversationSettingMessage || shouldDisappearButIsntMessage) ) { - window.log.warn( - 'Received a legacy disappearing message after v2 was released. Overriding it with the conversation settings', + window.log.debug( + 'WIP: Received a legacy disappearing message after v2 was released. Overriding it with the conversation settings', content ); expirationTimer = convoToUpdate.get('expireTimer'); - expirationType = changeToDisappearingMessageType( - convoToUpdate, - convoToUpdate.get('expirationType') - ); + expirationMode = convoToUpdate.get('expirationType'); } const expireUpdate: DisappearingMessageUpdate = { - expirationType, + expirationType: changeToDisappearingMessageType(convoToUpdate, expirationMode), expirationTimer, lastDisappearingMessageChangeTimestamp, isLegacyConversationSettingMessage,