Explorar o código

Merge pull request #29557 from overleaf/rh-compile-timeout-event-fix

Send paywall-click events when navigation suppressed

GitOrigin-RevId: b36dcb590d4d30a47a30f95febb4cf479c38f377
roo hutton hai 9 meses
pai
achega
386fa19ffc

+ 11 - 6
services/web/frontend/js/main/account-upgrade.ts

@@ -4,7 +4,8 @@ export function startFreeTrial(
   source: string,
   source: string,
   variant?: string,
   variant?: string,
   segmentation?: eventTracking.Segmentation,
   segmentation?: eventTracking.Segmentation,
-  extraSearchParams?: Record<string, string>
+  extraSearchParams?: Record<string, string>,
+  shouldNavigate: boolean = true
 ) {
 ) {
   const eventSegmentation: Record<string, string> = {
   const eventSegmentation: Record<string, string> = {
     'paywall-type': source,
     'paywall-type': source,
@@ -17,12 +18,16 @@ export function startFreeTrial(
   eventTracking.send('subscription-funnel', 'upgraded-free-trial', source)
   eventTracking.send('subscription-funnel', 'upgraded-free-trial', source)
   eventTracking.sendMB('paywall-click', eventSegmentation)
   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) {
 export function upgradePlan(source: string) {

+ 10 - 2
services/web/frontend/js/shared/components/start-free-trial-button.tsx

@@ -42,14 +42,22 @@ export default function StartFreeTrialButton({
     (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
     (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
       event.preventDefault()
       event.preventDefault()
 
 
+      let shouldNavigate = true
+
       if (handleClick) {
       if (handleClick) {
         handleClick(event)
         handleClick(event)
         if (event.isPropagationStopped()) {
         if (event.isPropagationStopped()) {
-          return
+          shouldNavigate = false
         }
         }
       }
       }
 
 
-      startFreeTrial(source, variant, segmentation, extraSearchParams)
+      startFreeTrial(
+        source,
+        variant,
+        segmentation,
+        extraSearchParams,
+        shouldNavigate
+      )
     },
     },
     [handleClick, source, variant, segmentation, extraSearchParams]
     [handleClick, source, variant, segmentation, extraSearchParams]
   )
   )