diff --git a/ts/services/megaphone.preload.ts b/ts/services/megaphone.preload.ts index e584aa8105..fa3e82eecd 100644 --- a/ts/services/megaphone.preload.ts +++ b/ts/services/megaphone.preload.ts @@ -194,6 +194,7 @@ export function isMegaphoneShowable( ): megaphone is VisibleRemoteMegaphoneType { const nowMs = Date.now(); const { + dontShowBeforeEpochMs, dontShowAfterEpochMs, isFinished, snoozedAt, @@ -201,7 +202,11 @@ export function isMegaphoneShowable( secondaryCtaId, } = megaphone; - if (isFinished || nowMs > dontShowAfterEpochMs) { + if ( + isFinished || + nowMs < dontShowBeforeEpochMs || + nowMs > dontShowAfterEpochMs + ) { return false; } diff --git a/ts/test-node/services/megaphone_test.preload.ts b/ts/test-node/services/megaphone_test.preload.ts index 1b7831b406..5ceda95326 100644 --- a/ts/test-node/services/megaphone_test.preload.ts +++ b/ts/test-node/services/megaphone_test.preload.ts @@ -109,6 +109,13 @@ describe('megaphone service', () => { assert.strictEqual(isMegaphoneShowable(megaphone), true); }); + it('handles megaphone with dontShowBeforeEpochMs in the future', () => { + const megaphone = getMegaphone({ + dontShowBeforeEpochMs: Date.now() + 1 * DAY, + }); + assert.strictEqual(isMegaphoneShowable(megaphone), false); + }); + it('handles megaphone expired past dontShowAfterEpochMs', () => { const megaphone = getMegaphone({ dontShowAfterEpochMs: Date.now() - 1 * DAY,