diff --git a/ts/services/megaphone.preload.ts b/ts/services/megaphone.preload.ts index 3e8441d719..23ace4d490 100644 --- a/ts/services/megaphone.preload.ts +++ b/ts/services/megaphone.preload.ts @@ -7,6 +7,7 @@ import { getMegaphoneLastSnoozeDurationMs, MegaphoneCtaId, SNOOZE_DEFAULT_DURATION, + type RemoteMegaphoneId, type RemoteMegaphoneType, type VisibleRemoteMegaphoneType, } from '../types/Megaphone.std.js'; @@ -121,6 +122,13 @@ export function isConditionalActive(conditionalId: string | null): boolean { return false; } +export async function deleteMegaphoneAndRemoveFromRedux( + id: RemoteMegaphoneId +): Promise { + await DataWriter.deleteMegaphone(id); + window.reduxActions.megaphones.removeVisibleMegaphone(id); +} + // Private async function processMegaphone(megaphone: RemoteMegaphoneType): Promise { @@ -128,8 +136,7 @@ async function processMegaphone(megaphone: RemoteMegaphoneType): Promise { if (isMegaphoneDeletable(megaphone)) { log.info(`processMegaphone: Deleting ${id}`); - await DataWriter.deleteMegaphone(id); - window.reduxActions.megaphones.removeVisibleMegaphone(id); + await deleteMegaphoneAndRemoveFromRedux(id); return; } diff --git a/ts/services/releaseNoteAndMegaphoneFetcher.preload.ts b/ts/services/releaseNoteAndMegaphoneFetcher.preload.ts index 060881f4e4..dd89b1a277 100644 --- a/ts/services/releaseNoteAndMegaphoneFetcher.preload.ts +++ b/ts/services/releaseNoteAndMegaphoneFetcher.preload.ts @@ -47,6 +47,7 @@ import { type RemoteMegaphoneType } from '../types/Megaphone.std.js'; import { isCountryPpmCsvBucketEnabled } from '../RemoteConfig.dom.js'; import type { AciString } from '../types/ServiceId.std.js'; import { + deleteMegaphoneAndRemoveFromRedux, isRemoteMegaphoneEnabled, runMegaphoneCheck, } from './megaphone.preload.js'; @@ -238,7 +239,7 @@ export class ReleaseNoteAndMegaphoneFetcher { `deleteUnknownMegaphones: Found local megaphone missing in manifest, deleting: ${id}` ); // eslint-disable-next-line no-await-in-loop - await DataWriter.deleteMegaphone(id); + await deleteMegaphoneAndRemoveFromRedux(id); } } diff --git a/ts/sql/server/megaphones.std.ts b/ts/sql/server/megaphones.std.ts index d7129b7ecf..0f2513115d 100644 --- a/ts/sql/server/megaphones.std.ts +++ b/ts/sql/server/megaphones.std.ts @@ -216,6 +216,8 @@ export function snoozeMegaphone( ); } +// Note: When deleting megaphones, ensure megaphones are removed from redux also. +// See: deleteMegaphoneAndRemoveFromRedux() export function deleteMegaphone( db: WritableDB, megaphoneId: RemoteMegaphoneId