From 02e7ac52e21506a199d6391a8ede6d90efe75fe9 Mon Sep 17 00:00:00 2001 From: Kristina <7614497+khjrtbrg@users.noreply.github.com> Date: Thu, 12 Jun 2025 11:22:10 +0200 Subject: [PATCH] Merge pull request #26208 from overleaf/kh-extend-trial [web] support extending trials for Stripe GitOrigin-RevId: ae7d863f61ce5ec463509c590199c6e583300e8f --- .../app/src/Features/Subscription/SubscriptionHandler.js | 7 ++----- .../app/src/Features/Subscription/SubscriptionHelper.js | 4 ++-- .../web/frontend/js/features/project-list/util/user.ts | 2 +- .../test/unit/src/Subscription/SubscriptionHelperTests.js | 2 ++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/services/web/app/src/Features/Subscription/SubscriptionHandler.js b/services/web/app/src/Features/Subscription/SubscriptionHandler.js index 9471974b08..b83b52c852 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionHandler.js +++ b/services/web/app/src/Features/Subscription/SubscriptionHandler.js @@ -246,11 +246,8 @@ async function attemptPaypalInvoiceCollection(recurlyAccountCode) { ) } -async function extendTrial(subscription, daysToExend) { - await RecurlyWrapper.promises.extendTrial( - subscription.recurlySubscription_id, - daysToExend - ) +async function extendTrial(subscription, daysToExtend) { + await Modules.promises.hooks.fire('extendTrial', subscription, daysToExtend) } /** diff --git a/services/web/app/src/Features/Subscription/SubscriptionHelper.js b/services/web/app/src/Features/Subscription/SubscriptionHelper.js index b4acef4d3e..d409f47530 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionHelper.js +++ b/services/web/app/src/Features/Subscription/SubscriptionHelper.js @@ -126,14 +126,14 @@ function getPaidSubscriptionState(subscription) { } function getSubscriptionTrialStartedAt(subscription) { - if (subscription?.recurlyStatus) { + if (subscription?.recurlyStatus?.trialStartedAt) { return subscription.recurlyStatus?.trialStartedAt } return subscription?.paymentProvider?.trialStartedAt } function getSubscriptionTrialEndsAt(subscription) { - if (subscription?.recurlyStatus) { + if (subscription?.recurlyStatus?.trialEndsAt) { return subscription.recurlyStatus?.trialEndsAt } return subscription?.paymentProvider?.trialEndsAt diff --git a/services/web/frontend/js/features/project-list/util/user.ts b/services/web/frontend/js/features/project-list/util/user.ts index 115ad03cbc..cd2abe07d5 100644 --- a/services/web/frontend/js/features/project-list/util/user.ts +++ b/services/web/frontend/js/features/project-list/util/user.ts @@ -24,7 +24,7 @@ export function getUserName(user: UserRef) { export function getUserSubscriptionState(subscription: Subscription) { if ('subscription' in subscription) { - if (subscription.subscription.recurlyStatus) { + if (subscription.subscription.recurlyStatus?.state) { return subscription.subscription.recurlyStatus.state } if (subscription.subscription.paymentProvider) { diff --git a/services/web/test/unit/src/Subscription/SubscriptionHelperTests.js b/services/web/test/unit/src/Subscription/SubscriptionHelperTests.js index c700e67316..d22f877646 100644 --- a/services/web/test/unit/src/Subscription/SubscriptionHelperTests.js +++ b/services/web/test/unit/src/Subscription/SubscriptionHelperTests.js @@ -437,6 +437,7 @@ describe('SubscriptionHelper', function () { it('should return the payment provider trial start date if it exists', function () { const result = this.SubscriptionHelper.getSubscriptionTrialStartedAt({ + recurlyStatus: {}, paymentProvider: { trialStartedAt: new Date('2023-01-01') }, }) expect(result).to.deep.equal(new Date('2023-01-01')) @@ -459,6 +460,7 @@ describe('SubscriptionHelper', function () { it('should return the payment provider trial end date if it exists', function () { const result = this.SubscriptionHelper.getSubscriptionTrialEndsAt({ + recurlyStatus: {}, paymentProvider: { trialEndsAt: new Date('2023-01-01') }, }) expect(result).to.deep.equal(new Date('2023-01-01'))