feat: improved syncing of timers for disappear after send

pull/2660/head
William Grant 2 years ago
parent 4d92500b60
commit 996d204dc8

@ -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(

@ -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.

@ -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') {

Loading…
Cancel
Save