From 5e73e1ae97378d2b81bbbf86def2ffee7ae49d31 Mon Sep 17 00:00:00 2001 From: yash-signal Date: Wed, 12 Feb 2025 15:36:29 -0500 Subject: [PATCH] Release Notes Channel: Fix behavior when conversation is blocked --- ts/services/releaseNotesFetcher.ts | 31 ++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/ts/services/releaseNotesFetcher.ts b/ts/services/releaseNotesFetcher.ts index a9a65512b6..bde61858fc 100644 --- a/ts/services/releaseNotesFetcher.ts +++ b/ts/services/releaseNotesFetcher.ts @@ -172,11 +172,34 @@ export class ReleaseNotesFetcher { log.info('ReleaseNotesFetcher: WebAPI unavailable'); throw new Error('WebAPI unavailable'); } + + log.info('ReleaseNotesFetcher: Ensuring Signal conversation'); + const signalConversation = + await window.ConversationController.getOrCreateSignalConversation(); + const sortedNotes = [...notes].sort( (a: ManifestReleaseNoteType, b: ManifestReleaseNoteType) => semver.compare(a.desktopMinVersion, b.desktopMinVersion) ); + const newestNote = last(sortedNotes); + strictAssert(newestNote, 'processReleaseNotes requires at least 1 note'); + + const versionWatermark = newestNote.desktopMinVersion; + + if (signalConversation.isBlocked()) { + log.info( + `ReleaseNotesFetcher: Signal conversation is blocked, updating watermark to ${versionWatermark}` + ); + drop( + window.textsecure.storage.put( + VERSION_WATERMARK_STORAGE_KEY, + versionWatermark + ) + ); + return; + } + const hydratedNotesWithRawAttachments = ( await Promise.all( sortedNotes.map(async note => { @@ -242,10 +265,6 @@ export class ReleaseNotesFetcher { return; } - log.info('ReleaseNotesFetcher: Ensuring Signal conversation'); - const signalConversation = - await window.ConversationController.getOrCreateSignalConversation(); - const messages: Array = []; hydratedNotes.forEach( ({ hydratedNote: note, processedAttachment }, index) => { @@ -320,10 +339,6 @@ export class ReleaseNotesFetcher { signalConversation.set({ active_at: Date.now(), isArchived: false }); drop(signalConversation.updateUnread()); - const newestNote = last(sortedNotes); - strictAssert(newestNote, 'processReleaseNotes requires at least 1 note'); - - const versionWatermark = newestNote.desktopMinVersion; log.info( `ReleaseNotesFetcher: Updating version watermark to ${versionWatermark}` );