From 386fa19ffca47933f10d793f9488dfe20d62cc75 Mon Sep 17 00:00:00 2001 From: roo hutton Date: Fri, 7 Nov 2025 10:17:10 +0000 Subject: [PATCH] Merge pull request #29557 from overleaf/rh-compile-timeout-event-fix Send paywall-click events when navigation suppressed GitOrigin-RevId: b36dcb590d4d30a47a30f95febb4cf479c38f377 --- .../web/frontend/js/main/account-upgrade.ts | 17 +++++++++++------ .../components/start-free-trial-button.tsx | 12 ++++++++++-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/services/web/frontend/js/main/account-upgrade.ts b/services/web/frontend/js/main/account-upgrade.ts index 370395d590..0e4e8fbc09 100644 --- a/services/web/frontend/js/main/account-upgrade.ts +++ b/services/web/frontend/js/main/account-upgrade.ts @@ -4,7 +4,8 @@ export function startFreeTrial( source: string, variant?: string, segmentation?: eventTracking.Segmentation, - extraSearchParams?: Record + extraSearchParams?: Record, + shouldNavigate: boolean = true ) { const eventSegmentation: Record = { 'paywall-type': source, @@ -17,12 +18,16 @@ export function startFreeTrial( eventTracking.send('subscription-funnel', 'upgraded-free-trial', source) eventTracking.sendMB('paywall-click', eventSegmentation) - const searchParams = new URLSearchParams({ - itm_campaign: source, - ...extraSearchParams, - }) + if (shouldNavigate) { + const searchParams = new URLSearchParams({ + itm_campaign: source, + ...extraSearchParams, + }) - window.open(`/user/subscription/choose-your-plan?${searchParams.toString()}`) + window.open( + `/user/subscription/choose-your-plan?${searchParams.toString()}` + ) + } } export function upgradePlan(source: string) { diff --git a/services/web/frontend/js/shared/components/start-free-trial-button.tsx b/services/web/frontend/js/shared/components/start-free-trial-button.tsx index d035bd43f1..d461da9750 100644 --- a/services/web/frontend/js/shared/components/start-free-trial-button.tsx +++ b/services/web/frontend/js/shared/components/start-free-trial-button.tsx @@ -42,14 +42,22 @@ export default function StartFreeTrialButton({ (event: React.MouseEvent) => { event.preventDefault() + let shouldNavigate = true + if (handleClick) { handleClick(event) if (event.isPropagationStopped()) { - return + shouldNavigate = false } } - startFreeTrial(source, variant, segmentation, extraSearchParams) + startFreeTrial( + source, + variant, + segmentation, + extraSearchParams, + shouldNavigate + ) }, [handleClick, source, variant, segmentation, extraSearchParams] )