From beb04d1b31ff1755bd52500254adc59870bcdc8b Mon Sep 17 00:00:00 2001 From: William Grant Date: Mon, 25 Sep 2023 11:14:03 +1000 Subject: [PATCH] feat: improved logging for start expiry timestamp --- ts/models/message.ts | 13 +++++++++++-- ts/models/messageType.ts | 2 +- ts/receiver/contentMessage.ts | 6 +++++- ts/receiver/queuedJob.ts | 17 +++++++++-------- ts/session/group/closed-group.ts | 6 +++++- ts/session/sending/MessageSentHandler.ts | 4 ++-- ts/session/utils/calling/CallManager.ts | 18 +++++++++++++++--- ts/util/expiringMessages.ts | 23 ++++++++++++++++------- 8 files changed, 64 insertions(+), 25 deletions(-) diff --git a/ts/models/message.ts b/ts/models/message.ts index d29727bbe..1df719ce6 100644 --- a/ts/models/message.ts +++ b/ts/models/message.ts @@ -1118,9 +1118,12 @@ export class MessageModel extends Backbone.Model { ); if (expirationMode === 'legacy' || expirationMode === 'deleteAfterRead') { - // window.log.debug(`WIP: markMessageReadNoCommit setExpirationStartTimestamp is starting`); this.set({ - expirationStartTimestamp: setExpirationStartTimestamp(expirationMode, readAt), + expirationStartTimestamp: setExpirationStartTimestamp( + expirationMode, + readAt, + 'markMessageReadNoCommit' + ), }); } } @@ -1195,6 +1198,12 @@ export class MessageModel extends Backbone.Model { if (id) { await this.commit(); } + } else { + window.log.warn( + `WIP: [setToExpire]\nmessageHash ${messageHash} has no new TTL.\n Keeping the old one ${expiresAt} which expires at ${new Date( + expiresAt + ).toUTCString()}` + ); } } } diff --git a/ts/models/messageType.ts b/ts/models/messageType.ts index 50374ca33..002ff81e8 100644 --- a/ts/models/messageType.ts +++ b/ts/models/messageType.ts @@ -111,7 +111,7 @@ export interface MessageAttributes { messageRequestResponse?: MessageRequestResponseMsg; /** - * This field is used for unsending messages and used in sending unsend message requests. + * This field is used for unsending messages and used in sending expire,get_expiries and unsend message requests. */ messageHash?: string; diff --git a/ts/receiver/contentMessage.ts b/ts/receiver/contentMessage.ts index 2bf1435bf..eeaf91ab2 100644 --- a/ts/receiver/contentMessage.ts +++ b/ts/receiver/contentMessage.ts @@ -886,7 +886,11 @@ export async function handleDataExtractionNotification( // NOTE Trigger for an incoming message // TODO legacy messages support will be removed in a future release if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') { - expirationStartTimestamp = setExpirationStartTimestamp(expirationMode); + expirationStartTimestamp = setExpirationStartTimestamp( + expirationMode, + undefined, + 'handleDataExtractionNotification' + ); } } diff --git a/ts/receiver/queuedJob.ts b/ts/receiver/queuedJob.ts index 27746526a..f3c7fef57 100644 --- a/ts/receiver/queuedJob.ts +++ b/ts/receiver/queuedJob.ts @@ -194,9 +194,12 @@ function updateReadStatus(message: MessageModel) { ); if (expirationMode === 'legacy' || expirationMode === 'deleteAfterRead') { - // window.log.debug(`WIP: updateReadStatus setExpirationStartTimestamp is starting`); message.set({ - expirationStartTimestamp: setExpirationStartTimestamp(expirationMode), + expirationStartTimestamp: setExpirationStartTimestamp( + expirationMode, + undefined, + 'updateReadStatus' + ), }); } } @@ -384,13 +387,11 @@ async function markConvoAsReadIfOutgoingMessage( ); if (expirationMode !== 'off') { - // window.log.debug( - // `WIP: markConvoAsReadIfOutgoingMessage setExpirationStartTimestamp is starting` - // ); message.set({ expirationStartTimestamp: setExpirationStartTimestamp( expirationMode, - message.get('sent_at') + message.get('sent_at'), + 'markConvoAsReadIfOutgoingMessage' ), }); await message.commit(); @@ -441,11 +442,11 @@ export async function handleMessageJob( (canBeDeleteAfterSend && expirationMode === 'legacy') || expirationMode === 'deleteAfterSend' ) { - // window.log.debug(`WIP: handleMessageJob setExpirationStartTimestamp is starting`); messageModel.set({ expirationStartTimestamp: setExpirationStartTimestamp( expirationMode, - messageModel.get('sent_at') + messageModel.get('sent_at'), + 'handleMessageJob' ), }); } diff --git a/ts/session/group/closed-group.ts b/ts/session/group/closed-group.ts index 71699060d..60273f516 100644 --- a/ts/session/group/closed-group.ts +++ b/ts/session/group/closed-group.ts @@ -187,7 +187,11 @@ export async function addUpdateMessage( // NOTE Trigger for an incoming message // TODO legacy messages support will be removed in a future release if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') { - expirationStartTimestamp = setExpirationStartTimestamp(expirationMode, sentAt); + expirationStartTimestamp = setExpirationStartTimestamp( + expirationMode, + sentAt, + 'addUpdateMessage' + ); } } diff --git a/ts/session/sending/MessageSentHandler.ts b/ts/session/sending/MessageSentHandler.ts index ab8a16e80..06ac631b3 100644 --- a/ts/session/sending/MessageSentHandler.ts +++ b/ts/session/sending/MessageSentHandler.ts @@ -148,11 +148,11 @@ async function handleMessageSentSuccess( // NOTE starting disappearing messages timer for all outbound messages if (expirationMode !== 'off') { - // window.log.debug(`WIP: handleMessageSentSuccess setExpirationStartTimestamp is starting`); fetchedMessage.set({ expirationStartTimestamp: setExpirationStartTimestamp( expirationMode, - fetchedMessage.get('sent_at') + fetchedMessage.get('sent_at'), + 'handleMessageSentSuccess' ), }); } diff --git a/ts/session/utils/calling/CallManager.ts b/ts/session/utils/calling/CallManager.ts index f5ceeab37..d44959b03 100644 --- a/ts/session/utils/calling/CallManager.ts +++ b/ts/session/utils/calling/CallManager.ts @@ -526,7 +526,11 @@ export async function USER_callRecipient(recipient: string) { expirationType = changeToDisappearingMessageType(calledConvo, expireTimer, expirationMode); if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') { - expirationStartTimestamp = setExpirationStartTimestamp(expirationMode, now); + expirationStartTimestamp = setExpirationStartTimestamp( + expirationMode, + now, + 'USER_callRecipient' + ); } } @@ -907,7 +911,11 @@ export async function USER_acceptIncomingCallRequest(fromSender: string) { expirationType = changeToDisappearingMessageType(callerConvo, expireTimer, expirationMode); if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') { - expirationStartTimestamp = setExpirationStartTimestamp(expirationMode, networkTimestamp); + expirationStartTimestamp = setExpirationStartTimestamp( + expirationMode, + networkTimestamp, + 'USER_acceptIncomingCallRequest' + ); } } @@ -1264,7 +1272,11 @@ async function addMissedCallMessage(callerPubkey: string, sentAt: number) { ); if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') { - expirationStartTimestamp = setExpirationStartTimestamp(expirationMode, sentAt); + expirationStartTimestamp = setExpirationStartTimestamp( + expirationMode, + sentAt, + 'addMissedCallMessage' + ); } } diff --git a/ts/util/expiringMessages.ts b/ts/util/expiringMessages.ts index 32fc7d116..7bf520297 100644 --- a/ts/util/expiringMessages.ts +++ b/ts/util/expiringMessages.ts @@ -243,14 +243,19 @@ export const ExpirationTimerOptions = { export function setExpirationStartTimestamp( mode: DisappearingMessageConversationType, - timestamp?: number + timestamp?: number, + callLocation?: string // this is for debugging purposes ): number | undefined { let expirationStartTimestamp: number | undefined = GetNetworkTime.getNowWithNetworkOffset(); + if (callLocation) { + window.log.debug(`WIP: [setExpirationStartTimestamp] called from: ${callLocation} `); + } + // TODO legacy messages support will be removed in a future release if (timestamp) { window.log.debug( - `WIP: We compare 2 timestamps for a disappearing message (${mode}): expirationStartTimestamp `, + `WIP: [setExpirationStartTimestamp] We compare 2 timestamps for a disappearing message (${mode}): expirationStartTimestamp `, new Date(expirationStartTimestamp).toLocaleTimeString(), '\ntimestamp ', new Date(timestamp).toLocaleTimeString() @@ -261,28 +266,32 @@ export function setExpirationStartTimestamp( // TODO legacy messages support will be removed in a future release if (mode === 'deleteAfterRead') { window.log.debug( - `WIP: We set the start timestamp for a delete after read message to ${new Date( + `WIP: [setExpirationStartTimestamp] We set the start timestamp for a delete after read message to ${new Date( expirationStartTimestamp ).toLocaleTimeString()}` ); } else if (mode === 'deleteAfterSend') { window.log.debug( - `WIP: We set the start timestamp for a delete after send message to ${new Date( + `WIP: [setExpirationStartTimestamp] We set the start timestamp for a delete after send message to ${new Date( expirationStartTimestamp ).toLocaleTimeString()}` ); // TODO needs improvement } else if (mode === 'legacy') { window.log.debug( - `WIP: We set the start timestamp for a legacy message to ${new Date( + `WIP: [setExpirationStartTimestamp] We set the start timestamp for a legacy message to ${new Date( expirationStartTimestamp ).toLocaleTimeString()}` ); } else if (mode === 'off') { - window.log.debug('Disappearing message mode has been turned off. We can safely ignore this.'); + window.log.debug( + 'WIP: [setExpirationStartTimestamp] Disappearing message mode has been turned off. We can safely ignore this.' + ); expirationStartTimestamp = undefined; } else { - window.log.debug(`WIP: Invalid disappearing message mode "${mode}" set. Ignoring`); + window.log.debug( + `WIP: [setExpirationStartTimestamp] Invalid disappearing message mode "${mode}" set. Ignoring` + ); expirationStartTimestamp = undefined; }