fix: expire all outbound disapparing messages as soon as they are sent to match other platforms

pull/2660/head
William Grant 2 years ago
parent 157ec74cc1
commit 7d9945911c

@ -127,31 +127,34 @@ async function handleMessageSentSuccess(
const convo = fetchedMessage.getConversation();
const isLegacyReadMode = convo && convo.isPrivate() && expirationType === 'legacy';
const isLegacySentMode = convo && convo.isMediumGroup() && expirationType === 'legacy';
const markAsUnread = isLegacyReadMode || expirationType === 'deleteAfterRead';
fetchedMessage.set({
sent_to: sentTo,
sent: true,
sent_at: effectiveTimestamp,
// TODO message status overrides this for some reason in the UI, message still disappears though
unread: markAsUnread ? 1 : 0,
});
// TODO legacy messages support will be removed in a future release
// NOTE we treat all outbound disappearing messages as read as soon as they are sent.
if (
(isLegacySentMode || expirationType === 'deleteAfterSend') &&
(isLegacyReadMode ||
isLegacySentMode ||
expirationType === 'deleteAfterRead' ||
expirationType === 'deleteAfterSend') &&
Boolean(fetchedMessage.get('expirationStartTimestamp')) === false
) {
if (expirationType === 'legacy' || expirationType === 'deleteAfterSend') {
// TODO message timer start is a few seconds less than the amount due to it's position in the pipeline, not sure on a fix yet
fetchedMessage.set({
expirationStartTimestamp: setExpirationStartTimestamp(
'deleteAfterSend',
fetchedMessage.get('sent_at'),
isLegacySentMode
),
});
}
const expirationMode =
isLegacyReadMode || expirationType === 'deleteAfterRead'
? 'deleteAfterRead'
: 'deleteAfterSend';
fetchedMessage.set({
expirationStartTimestamp: setExpirationStartTimestamp(
expirationMode,
fetchedMessage.get('sent_at'),
isLegacyReadMode || isLegacySentMode
),
});
}
await fetchedMessage.commit();

Loading…
Cancel
Save