Skip to content

Commit e2d2fdc

Browse files
committed
Fix premature banner:none event causing mobile sticky race condition - wait for pickMessage to complete first before dispatching banner:none
1 parent 113b81c commit e2d2fdc

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

dotcom-rendering/src/components/StickyBottomBanner.importable.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ export const StickyBottomBanner = ({
275275
);
276276

277277
const [SelectedBanner, setSelectedBanner] = useState<MaybeFC | null>(null);
278+
const [hasPickMessageCompleted, setHasPickMessageCompleted] =
279+
useState<boolean>(false);
278280
const [asyncArticleCounts, setAsyncArticleCounts] =
279281
useState<Promise<ArticleCounts | undefined>>();
280282

@@ -365,9 +367,10 @@ export const StickyBottomBanner = ({
365367
};
366368

367369
pickMessage(bannerConfig, renderingTarget)
368-
.then((PickedBanner: () => MaybeFC) =>
369-
setSelectedBanner(PickedBanner),
370-
)
370+
.then((PickedBanner: () => MaybeFC) => {
371+
setSelectedBanner(PickedBanner);
372+
setHasPickMessageCompleted(true);
373+
})
371374
.catch((e) => {
372375
// Report error to Sentry
373376
const msg = `StickyBottomBanner pickMessage - error: ${String(
@@ -377,6 +380,7 @@ export const StickyBottomBanner = ({
377380
new Error(msg),
378381
'sticky-bottom-banner',
379382
);
383+
setHasPickMessageCompleted(true);
380384
});
381385
}, [
382386
isSignedIn,
@@ -403,14 +407,14 @@ export const StickyBottomBanner = ({
403407
]);
404408

405409
useEffect(() => {
406-
if (SelectedBanner == null) {
410+
if (hasPickMessageCompleted && SelectedBanner == null) {
407411
document.dispatchEvent(
408412
new CustomEvent('banner:none', {
409413
detail: { readerRevenue: false },
410414
}),
411415
);
412416
}
413-
}, [SelectedBanner]);
417+
}, [SelectedBanner, hasPickMessageCompleted]);
414418
if (SelectedBanner) {
415419
return <SelectedBanner />;
416420
}

0 commit comments

Comments
 (0)