diff --git a/ts/receiver/dataMessage.ts b/ts/receiver/dataMessage.ts index f7de8ede3..8100bba82 100644 --- a/ts/receiver/dataMessage.ts +++ b/ts/receiver/dataMessage.ts @@ -242,18 +242,23 @@ export async function handleSwarmDataMessage( sentAt: sentAtTimestamp, }); - if (expireUpdate.expirationType === 'deleteAfterSend') { - const expirationStartTimestamp = setExpirationStartTimestamp( - msgModel, - 'deleteAfterSend', - msgModel.get('sent_at') - ); - msgModel.set('expirationStartTimestamp', expirationStartTimestamp); - console.log( - `WIP: handleSwarmDataMessage msgModel expirationStartTimestamp`, - msgModel.get('expirationStartTimestamp'), - msgModel.get('sent_at') - ); + if (isSyncedMessage) { + // TODO handle sync messages separately + console.log(`WIP: Sync Message dropping`); + } else { + if (expireUpdate.expirationType === 'deleteAfterSend') { + const expirationStartTimestamp = setExpirationStartTimestamp( + msgModel, + 'deleteAfterSend', + msgModel.get('sent_at') + ); + msgModel.set('expirationStartTimestamp', expirationStartTimestamp); + console.log( + `WIP: handleSwarmDataMessage msgModel expirationStartTimestamp`, + msgModel.get('expirationStartTimestamp'), + msgModel.get('sent_at') + ); + } } await handleSwarmMessage( diff --git a/ts/session/sending/MessageSentHandler.ts b/ts/session/sending/MessageSentHandler.ts index e41da4986..f8f4e0f92 100644 --- a/ts/session/sending/MessageSentHandler.ts +++ b/ts/session/sending/MessageSentHandler.ts @@ -119,8 +119,17 @@ async function handleMessageSentSuccess( window?.log?.warn('Got an error while trying to sendSyncMessage():', e); } } + if (fetchedMessage.get('expirationType')) { + const expirationStartTimestamp = setExpirationStartTimestamp( + fetchedMessage, + fetchedMessage.get('expirationType')!, + effectiveTimestamp + ); + fetchedMessage.set('expirationStartTimestamp', expirationStartTimestamp); + } } else if (shouldMarkMessageAsSynced) { fetchedMessage.set({ synced: true }); + // TODO handle sync messages separately } sentTo = _.union(sentTo, [sentMessage.device]); @@ -131,15 +140,6 @@ async function handleMessageSentSuccess( sent_at: effectiveTimestamp, }); - if (fetchedMessage.get('expirationType')) { - const expirationStartTimestamp = setExpirationStartTimestamp( - fetchedMessage, - fetchedMessage.get('expirationType')!, - effectiveTimestamp - ); - fetchedMessage.set('expirationStartTimestamp', expirationStartTimestamp); - } - await fetchedMessage.commit(); fetchedMessage.getConversation()?.updateLastMessage(); } @@ -165,19 +165,14 @@ async function handleMessageSentFailure( if (isOurDevice && !fetchedMessage.get('sync')) { fetchedMessage.set({ sentSync: false }); } + } - // TODO Need to handle messages failing to send differently? - if (fetchedMessage.get('expirationType') === 'deleteAfterSend') { - const expirationStartTimestamp = setExpirationStartTimestamp( - fetchedMessage, - 'deleteAfterSend' - ); - fetchedMessage.set('expirationStartTimestamp', expirationStartTimestamp); - } - - fetchedMessage.set({ - expirationStartTimestamp: Date.now(), - }); + if (fetchedMessage.get('expirationType')) { + const expirationStartTimestamp = setExpirationStartTimestamp( + fetchedMessage, + fetchedMessage.get('expirationType')! + ); + fetchedMessage.set('expirationStartTimestamp', expirationStartTimestamp); } // always mark the message as sent. diff --git a/ts/util/expiringMessages.ts b/ts/util/expiringMessages.ts index 4dd06f503..5b0f2b863 100644 --- a/ts/util/expiringMessages.ts +++ b/ts/util/expiringMessages.ts @@ -8,6 +8,7 @@ import { initWallClockListener } from './wallClockListener'; import { Data } from '../data/data'; import { getConversationController } from '../session/conversations'; import { MessageModel } from '../models/message'; +import { getNowWithNetworkOffset } from '../session/apis/snode_api/SNodeAPI'; // TODO Might need to be improved by using an enum export const DisappearingMessageMode = ['deleteAfterRead', 'deleteAfterSend']; @@ -201,15 +202,11 @@ export function setExpirationStartTimestamp( mode: DisappearingMessageType, timestamp?: number ) { - let expirationStartTimestamp = Date.now(); + let expirationStartTimestamp = getNowWithNetworkOffset(); if (timestamp) { - expirationStartTimestamp = Math.min(Date.now(), timestamp); - window.log.info( - `WIP: setExpirationStartTimestamp has a timestamp, comparing`, - Date.now(), - timestamp - ); + expirationStartTimestamp = Math.max(getNowWithNetworkOffset(), timestamp); + message.set('expirationStartTimestamp', expirationStartTimestamp); } if (mode === 'deleteAfterRead') {