fix: trigger expiry for outgoing sync messages

pull/2971/head
William Grant 2 years ago
parent 60aac9be85
commit 631c677a24

@ -521,7 +521,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
const expirationLength = this.get('expireTimer') * DURATION.SECONDS; const expirationLength = this.get('expireTimer') * DURATION.SECONDS;
const expireTimerStart = this.get('expirationStartTimestamp'); const expireTimerStart = this.get('expirationStartTimestamp');
const expirationTimestamp = const expirationTimestamp =
expirationType && expirationLength && expireTimerStart expirationType && expireTimerStart && expirationLength
? expireTimerStart + expirationLength ? expireTimerStart + expirationLength
: null; : null;
@ -1170,13 +1170,14 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
await this.commit(); await this.commit();
} }
window?.log?.debug('Set message expiration', { window?.log?.debug('WIP: Set message expiration', {
expiresAt, expiresAt,
sentAt: this.get('sent_at'), sentAt: this.get('sent_at'),
}); });
const messageHash = this.get('messageHash'); const messageHash = this.get('messageHash');
if (messageHash) { if (messageHash) {
// TODO Consolidate the snode /expire logic across all the different functions that call it.
await expireMessageOnSnode({ await expireMessageOnSnode({
messageHash, messageHash,
expireTimer: this.get('expireTimer'), expireTimer: this.get('expireTimer'),

@ -80,7 +80,7 @@ function getSharedAttributesForPublicMessage({
isPublic: true, isPublic: true,
conversationId, conversationId,
messageHash: '', // we do not care of a messageHash for an opengroup message. we have serverId for that messageHash: '', // we do not care of a messageHash for an opengroup message. we have serverId for that
// TODO do we need to worry about this? // Note Community messages do not have an expiration
expirationStartTimestamp: undefined, expirationStartTimestamp: undefined,
}; };
} }

@ -359,12 +359,42 @@ async function handleRegularMessage(
}); });
} }
function markConvoAsReadIfOutgoingMessage(conversation: ConversationModel, message: MessageModel) { async function markConvoAsReadIfOutgoingMessage(
conversation: ConversationModel,
message: MessageModel
) {
const isOutgoingMessage = const isOutgoingMessage =
message.get('type') === 'outgoing' || message.get('direction') === 'outgoing'; message.get('type') === 'outgoing' || message.get('direction') === 'outgoing';
if (isOutgoingMessage) { if (isOutgoingMessage) {
const sentAt = message.get('sent_at') || message.get('serverTimestamp'); const sentAt = message.get('sent_at') || message.get('serverTimestamp');
if (sentAt) { if (sentAt) {
const expirationType = message.get('expirationType');
const expireTimer = message.get('expireTimer');
// NOTE starting disappearing messages timer for all outbound messages
if (
expirationType &&
expireTimer > 0 &&
Boolean(message.get('expirationStartTimestamp')) === false
) {
const expirationMode = changeToDisappearingMessageConversationType(
conversation,
expirationType,
expireTimer
);
if (expirationMode !== 'off') {
window.log.debug(
`WIP: markConvoAsReadIfOutgoingMessage setExpirationStartTimestamp is starting`
);
message.set({
expirationStartTimestamp: setExpirationStartTimestamp(
expirationMode,
message.get('sent_at')
),
});
await message.commit();
}
}
conversation.markConversationRead(sentAt); conversation.markConversationRead(sentAt);
} }
} }
@ -522,7 +552,7 @@ export async function handleMessageJob(
); );
} }
markConvoAsReadIfOutgoingMessage(conversation, messageModel); await markConvoAsReadIfOutgoingMessage(conversation, messageModel);
if (messageModel.get('unread')) { if (messageModel.get('unread')) {
conversation.throttledNotify(messageModel); conversation.throttledNotify(messageModel);
} }

Loading…
Cancel
Save