From 898b42e13186fc67d1c578e66eac6635fcc8a0ad Mon Sep 17 00:00:00 2001 From: M Fahru Date: Thu, 27 Mar 2025 06:11:56 -0700 Subject: [PATCH] Merge pull request #22705 from overleaf/mf-tear-down-paywall-cta [web] Tear down `paywall-cta` split test GitOrigin-RevId: 8cfba819b80bb34f48f8fc1fec37aee6791ef9f0 --- .../app/src/Features/Project/ProjectController.js | 1 - .../Features/Project/ProjectListController.mjs | 9 --------- services/web/frontend/extracted-translations.json | 10 ---------- .../change-list/owner-paywall-prompt.tsx | 7 +------ .../compile-time-warning-upgrade-prompt-inner.tsx | 7 +------ .../components/timeout-upgrade-prompt-new.tsx | 7 +------ .../components/upgrade-track-changes-modal.tsx | 7 +------ services/web/locales/en.json | 15 --------------- 8 files changed, 4 insertions(+), 59 deletions(-) diff --git a/services/web/app/src/Features/Project/ProjectController.js b/services/web/app/src/Features/Project/ProjectController.js index ae86aae6aa..88a3716023 100644 --- a/services/web/app/src/Features/Project/ProjectController.js +++ b/services/web/app/src/Features/Project/ProjectController.js @@ -338,7 +338,6 @@ const _ProjectController = { 'external-socket-heartbeat', 'full-project-search', 'null-test-share-modal', - 'paywall-cta', 'pdf-caching-cached-url-lookup', 'pdf-caching-mode', 'pdf-caching-prefetch-large', diff --git a/services/web/app/src/Features/Project/ProjectListController.mjs b/services/web/app/src/Features/Project/ProjectListController.mjs index 82d0d2efdd..6ae7080961 100644 --- a/services/web/app/src/Features/Project/ProjectListController.mjs +++ b/services/web/app/src/Features/Project/ProjectListController.mjs @@ -409,15 +409,6 @@ async function projectListPage(req, res, next) { logger.error({ err: error }, 'Failed to get individual subscription') } - try { - await SplitTestHandler.promises.getAssignment(req, res, 'paywall-cta') - } catch (error) { - logger.error( - { err: error }, - 'failed to get "paywall-cta" split test assignment' - ) - } - // Get the user's assignment for the DS unified nav split test, which // populates splitTestVariants with a value for the split test name and allows // Pug to send it to the browser diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index 3fa667ac8e..728a80d386 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -604,21 +604,14 @@ "generic_if_problem_continues_contact_us": "", "generic_linked_file_compile_error": "", "generic_something_went_wrong": "", - "get_advanced_reference_search": "", "get_collaborative_benefits": "", "get_discounted_plan": "", - "get_dropbox_sync": "", "get_error_assist": "", "get_exclusive_access_to_labs": "", - "get_full_project_history": "", - "get_git_integration": "", - "get_github_sync": "", "get_in_touch": "", "get_more_compile_time": "", "get_most_subscription_by_checking_features": "", "get_most_subscription_discover_premium_features": "", - "get_symbol_palette": "", - "get_track_changes": "", "git": "", "git_authentication_token": "", "git_authentication_token_create_modal_info_1": "", @@ -988,7 +981,6 @@ "maximum_files_uploaded_together": "", "maybe_later": "", "members_management": "", - "mendeley_cta": "", "mendeley_dynamic_sync_description": "", "mendeley_groups_loading_error": "", "mendeley_groups_relink": "", @@ -1137,7 +1129,6 @@ "owner": "", "page_current": "", "pagination_navigation": "", - "papers_cta": "", "papers_dynamic_sync_description": "", "papers_groups_loading_error": "", "papers_groups_relink": "", @@ -2139,7 +2130,6 @@ "zoom_in": "", "zoom_out": "", "zoom_to": "", - "zotero_cta": "", "zotero_dynamic_sync_description": "", "zotero_groups_loading_error": "", "zotero_groups_relink": "", diff --git a/services/web/frontend/js/features/history/components/change-list/owner-paywall-prompt.tsx b/services/web/frontend/js/features/history/components/change-list/owner-paywall-prompt.tsx index e81b58a277..8053792db9 100644 --- a/services/web/frontend/js/features/history/components/change-list/owner-paywall-prompt.tsx +++ b/services/web/frontend/js/features/history/components/change-list/owner-paywall-prompt.tsx @@ -3,7 +3,6 @@ import Icon from '../../../../shared/components/icon' import { useCallback, useEffect, useState } from 'react' import * as eventTracking from '../../../../infrastructure/event-tracking' import StartFreeTrialButton from '../../../../shared/components/start-free-trial-button' -import { useFeatureFlag } from '@/shared/context/split-test-context' function FeatureItem({ text }: { text: string }) { return ( @@ -17,8 +16,6 @@ export function OwnerPaywallPrompt() { const { t } = useTranslation() const [clickedFreeTrialButton, setClickedFreeTrialButton] = useState(false) - const hasNewPaywallCta = useFeatureFlag('paywall-cta') - useEffect(() => { eventTracking.send('subscription-funnel', 'editor-click-feature', 'history') eventTracking.sendMB('paywall-prompt', { 'paywall-type': 'history' }) @@ -53,9 +50,7 @@ export function OwnerPaywallPrompt() { buttonProps={{ variant: 'premium' }} handleClick={handleFreeTrialClick} > - {hasNewPaywallCta - ? t('get_full_project_history') - : t('start_free_trial')} + {t('start_free_trial')}

{clickedFreeTrialButton ? ( diff --git a/services/web/frontend/js/features/pdf-preview/components/compile-time-warning-upgrade-prompt-inner.tsx b/services/web/frontend/js/features/pdf-preview/components/compile-time-warning-upgrade-prompt-inner.tsx index 2c59fdb314..09cfb5ddee 100644 --- a/services/web/frontend/js/features/pdf-preview/components/compile-time-warning-upgrade-prompt-inner.tsx +++ b/services/web/frontend/js/features/pdf-preview/components/compile-time-warning-upgrade-prompt-inner.tsx @@ -2,15 +2,12 @@ import Notification from '@/shared/components/notification' import StartFreeTrialButton from '@/shared/components/start-free-trial-button' import { useTranslation } from 'react-i18next' import { FC } from 'react' -import { useFeatureFlag } from '@/shared/context/split-test-context' export const CompileTimeWarningUpgradePromptInner: FC<{ handleDismissWarning: () => void }> = ({ handleDismissWarning }) => { const { t } = useTranslation() - const hasNewPaywallCta = useFeatureFlag('paywall-cta') - return ( - {hasNewPaywallCta - ? t('get_more_compile_time') - : t('start_free_trial_without_exclamation')} + {t('start_free_trial_without_exclamation')} } ariaLive="polite" diff --git a/services/web/frontend/js/features/pdf-preview/components/timeout-upgrade-prompt-new.tsx b/services/web/frontend/js/features/pdf-preview/components/timeout-upgrade-prompt-new.tsx index e8ae9a9b84..58613c785c 100644 --- a/services/web/frontend/js/features/pdf-preview/components/timeout-upgrade-prompt-new.tsx +++ b/services/web/frontend/js/features/pdf-preview/components/timeout-upgrade-prompt-new.tsx @@ -6,7 +6,6 @@ import PdfLogEntry from './pdf-log-entry' import { useStopOnFirstError } from '../../../shared/hooks/use-stop-on-first-error' import OLButton from '@/features/ui/components/ol/ol-button' import * as eventTracking from '../../../infrastructure/event-tracking' -import { useFeatureFlag } from '@/shared/context/split-test-context' import getMeta from '@/utils/meta' function TimeoutUpgradePromptNew() { @@ -50,8 +49,6 @@ const CompileTimeout = memo(function CompileTimeout({ }: CompileTimeoutProps) { const { t } = useTranslation() - const hasNewPaywallCta = useFeatureFlag('paywall-cta') - return ( - {hasNewPaywallCta - ? t('get_more_compile_time') - : t('start_a_free_trial')} + {t('start_a_free_trial')}

)} diff --git a/services/web/frontend/js/features/review-panel-new/components/upgrade-track-changes-modal.tsx b/services/web/frontend/js/features/review-panel-new/components/upgrade-track-changes-modal.tsx index 6f89c336a3..2c3205d902 100644 --- a/services/web/frontend/js/features/review-panel-new/components/upgrade-track-changes-modal.tsx +++ b/services/web/frontend/js/features/review-panel-new/components/upgrade-track-changes-modal.tsx @@ -5,7 +5,6 @@ import teaserVideo from '../images/teaser-track-changes.mp4' import teaserImage from '../images/teaser-track-changes.gif' import { startFreeTrial, upgradePlan } from '@/main/account-upgrade' import { memo } from 'react' -import { useFeatureFlag } from '@/shared/context/split-test-context' import OLModal, { OLModalBody, OLModalFooter, @@ -30,8 +29,6 @@ function UpgradeTrackChangesModal({ const project = useProjectContext() const user = useUserContext() - const hasNewPaywallCta = useFeatureFlag('paywall-cta') - return ( setShow(false)}> @@ -78,9 +75,7 @@ function UpgradeTrackChangesModal({ variant="primary" onClick={() => startFreeTrial('track-changes')} > - {hasNewPaywallCta - ? t('get_track_changes') - : t('try_it_for_free')} + {t('try_it_for_free')} ) : ( Get in touch with support if you’re having problems", "get_involved": "Get involved", - "get_more_compile_time": "Get more compile time", "get_most_subscription_by_checking_features": "Get the most out of your __appName__ subscription by checking out <0>__appName__’s features.", "get_most_subscription_discover_premium_features": "Get the most from your __appName__ subscription. <0>Discover premium features.", - "get_symbol_palette": "Get Symbol Palette", "get_the_best_overleaf_experience": "Get the best Overleaf experience", - "get_the_best_writing_experience": "Get the best writing experience", "get_the_most_out_headline": "Get the most out of __appName__ with features such as:", - "get_track_changes": "Get track changes", "git": "Git", "git_authentication_token": "Git authentication token", "git_authentication_token_create_modal_info_1": "This is your Git authentication token. You should enter this when prompted for a password.", @@ -1305,7 +1296,6 @@ "member_picker": "Select number of users for group plan", "members_management": "Members management", "mendeley": "Mendeley", - "mendeley_cta": "Get Mendeley integration", "mendeley_dynamic_sync_description": "With the Mendeley integration, you can import your references into __appName__. You can either import all your references at once or dynamically search your Mendeley library directly from __appName__.", "mendeley_groups_loading_error": "There was an error loading groups from Mendeley", "mendeley_groups_relink": "There was an error accessing your Mendeley data. This was likely caused by lack of permissions. Please re-link your account and try again.", @@ -1394,7 +1384,6 @@ "no_existing_password": "Please use the password reset form to set your password", "no_featured_templates": "No featured templates", "no_folder": "No folder", - "no_i_dont_need_these": "No, I don’t need these", "no_image_files_found": "No image files found", "no_libraries_selected": "No libraries selected", "no_members": "No members", @@ -1513,7 +1502,6 @@ "page_current": "Page __page__, Current Page", "page_not_found": "Page Not Found", "pagination_navigation": "Pagination Navigation", - "papers_cta": "Get Papers integration", "papers_dynamic_sync_description": "With the Papers integration, you can import your references into __appName__. You can either import all your references at once or dynamically search your Papers library directly from __appName__.", "papers_groups_loading_error": "There was an error loading libraries from Papers", "papers_groups_relink": "There was an error accessing your Papers data. This was likely caused by lack of permissions. Please re-link your account and try again.", @@ -2582,7 +2570,6 @@ "work_or_university_sso": "Work/university single sign-on", "work_with_non_overleaf_users": "Work with non Overleaf users", "work_with_other_github_users": "Work with other GitHub users", - "write_and_collaborate_faster_with_features_like": "Write and collaborate faster with features like:", "writefull": "Writefull", "writefull_loading_error_body": "Try refreshing the page. If this doesn’t work, try disabling any active browser extensions to check they aren’t blocking Writefull from loading.", "writefull_loading_error_title": "Writefull didn’t load correctly", @@ -2597,7 +2584,6 @@ "x_price_per_year": "__price__ per year", "year": "year", "yearly": "Yearly", - "yes_im_in": "Yes, I’m in", "yes_move_me_to_personal_plan": "Yes, move me to the Personal plan", "yes_that_is_correct": "Yes, that’s correct", "you": "You", @@ -2711,7 +2697,6 @@ "zoom_to": "Zoom to", "zotero": "Zotero", "zotero_and_mendeley_integrations": "<0>Zotero and <0>Mendeley integrations", - "zotero_cta": "Get Zotero integration", "zotero_dynamic_sync_description": "With the Zotero integration, you can import your references into __appName__. You can either import all your references at once or dynamically search your Zotero library directly from __appName__.", "zotero_groups_loading_error": "There was an error loading groups from Zotero", "zotero_groups_relink": "There was an error accessing your Zotero data. This was likely caused by lack of permissions. Please re-link your account and try again.",