When deleting megaphones ensure they are removed in redux

Co-authored-by: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com>
This commit is contained in:
automated-signal
2026-02-11 09:18:38 -06:00
committed by GitHub
parent 5d74febfe4
commit 389b4c6eee
3 changed files with 13 additions and 3 deletions

View File

@@ -7,6 +7,7 @@ import {
getMegaphoneLastSnoozeDurationMs, getMegaphoneLastSnoozeDurationMs,
MegaphoneCtaId, MegaphoneCtaId,
SNOOZE_DEFAULT_DURATION, SNOOZE_DEFAULT_DURATION,
type RemoteMegaphoneId,
type RemoteMegaphoneType, type RemoteMegaphoneType,
type VisibleRemoteMegaphoneType, type VisibleRemoteMegaphoneType,
} from '../types/Megaphone.std.js'; } from '../types/Megaphone.std.js';
@@ -121,6 +122,13 @@ export function isConditionalActive(conditionalId: string | null): boolean {
return false; return false;
} }
export async function deleteMegaphoneAndRemoveFromRedux(
id: RemoteMegaphoneId
): Promise<void> {
await DataWriter.deleteMegaphone(id);
window.reduxActions.megaphones.removeVisibleMegaphone(id);
}
// Private // Private
async function processMegaphone(megaphone: RemoteMegaphoneType): Promise<void> { async function processMegaphone(megaphone: RemoteMegaphoneType): Promise<void> {
@@ -128,8 +136,7 @@ async function processMegaphone(megaphone: RemoteMegaphoneType): Promise<void> {
if (isMegaphoneDeletable(megaphone)) { if (isMegaphoneDeletable(megaphone)) {
log.info(`processMegaphone: Deleting ${id}`); log.info(`processMegaphone: Deleting ${id}`);
await DataWriter.deleteMegaphone(id); await deleteMegaphoneAndRemoveFromRedux(id);
window.reduxActions.megaphones.removeVisibleMegaphone(id);
return; return;
} }

View File

@@ -47,6 +47,7 @@ import { type RemoteMegaphoneType } from '../types/Megaphone.std.js';
import { isCountryPpmCsvBucketEnabled } from '../RemoteConfig.dom.js'; import { isCountryPpmCsvBucketEnabled } from '../RemoteConfig.dom.js';
import type { AciString } from '../types/ServiceId.std.js'; import type { AciString } from '../types/ServiceId.std.js';
import { import {
deleteMegaphoneAndRemoveFromRedux,
isRemoteMegaphoneEnabled, isRemoteMegaphoneEnabled,
runMegaphoneCheck, runMegaphoneCheck,
} from './megaphone.preload.js'; } from './megaphone.preload.js';
@@ -238,7 +239,7 @@ export class ReleaseNoteAndMegaphoneFetcher {
`deleteUnknownMegaphones: Found local megaphone missing in manifest, deleting: ${id}` `deleteUnknownMegaphones: Found local megaphone missing in manifest, deleting: ${id}`
); );
// eslint-disable-next-line no-await-in-loop // eslint-disable-next-line no-await-in-loop
await DataWriter.deleteMegaphone(id); await deleteMegaphoneAndRemoveFromRedux(id);
} }
} }

View File

@@ -216,6 +216,8 @@ export function snoozeMegaphone(
); );
} }
// Note: When deleting megaphones, ensure megaphones are removed from redux also.
// See: deleteMegaphoneAndRemoveFromRedux()
export function deleteMegaphone( export function deleteMegaphone(
db: WritableDB, db: WritableDB,
megaphoneId: RemoteMegaphoneId megaphoneId: RemoteMegaphoneId