Contact Sync: Only update expireTimer on first sync

This commit is contained in:
Scott Nonnenberg 2024-08-13 06:25:01 +10:00 committed by GitHub
parent f1a7ac8c3d
commit 3a28aaab53
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -31,6 +31,7 @@ async function updateConversationFromContactSync(
receivedAtCounter: number,
sentAt: number
): Promise<void> {
const logId = `updateConversationFromContactSync(${conversation.idForLogging()}`;
const { writeNewAttachmentData, deleteAttachmentData, doesAttachmentExist } =
window.Signal.Migrations;
@ -60,6 +61,7 @@ async function updateConversationFromContactSync(
conversation.set({ avatar: null });
}
if (isInitialSync) {
// expireTimer isn't in Storage Service so we have to rely on contact sync.
await conversation.updateExpirationTimer(details.expireTimer, {
// Note: because it's our conversationId, this notification will be marked read. But
@ -70,6 +72,13 @@ async function updateConversationFromContactSync(
isInitialSync,
reason: `contact sync (sent=${sentAt})`,
});
} else if (
(details.expireTimer ?? 0) !== (conversation.get('expireTimer') ?? 0)
) {
log.warn(
`${logId}: Expire timer from contact sync is different from our data, but isInitialSync=${isInitialSync} so we won't apply it.`
);
}
window.Whisper.events.trigger('incrementProgress');
}