Merge pull request #27643 from overleaf/rh-pause-cancel
Terminate Recurly subscription when cancelling during final month of pause GitOrigin-RevId: 39e4c9534621f57b3e2783599ebe521959d7401f
This commit is contained in:
@@ -331,18 +331,32 @@ async function cancelSubscriptionByUuid(subscriptionUuid) {
|
||||
try {
|
||||
return await client.cancelSubscription('uuid-' + subscriptionUuid)
|
||||
} catch (err) {
|
||||
if (err instanceof recurly.errors.ValidationError) {
|
||||
if (
|
||||
err.message === 'Only active and future subscriptions can be canceled.'
|
||||
) {
|
||||
logger.debug(
|
||||
{ subscriptionUuid },
|
||||
'subscription cancellation failed, subscription not active'
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (!(err instanceof recurly.errors.ValidationError)) {
|
||||
throw err
|
||||
}
|
||||
|
||||
const errorMessage = err.message || ''
|
||||
|
||||
if (
|
||||
errorMessage === 'Only active and future subscriptions can be canceled.'
|
||||
) {
|
||||
logger.debug(
|
||||
{ subscriptionUuid },
|
||||
'subscription cancellation failed, subscription not active'
|
||||
)
|
||||
} else if (
|
||||
errorMessage.includes(
|
||||
'Cannot cancel a paused subscription in the last cycle of the term'
|
||||
)
|
||||
) {
|
||||
logger.debug(
|
||||
{ subscriptionUuid },
|
||||
'Terminating subscription in last cycle of paused term'
|
||||
)
|
||||
return await terminateSubscriptionByUuid(subscriptionUuid)
|
||||
}
|
||||
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -134,26 +134,19 @@ async function cancelPendingSubscriptionChange(user) {
|
||||
* @param user
|
||||
*/
|
||||
async function cancelSubscription(user) {
|
||||
try {
|
||||
const { hasSubscription, subscription } =
|
||||
await LimitationsManager.promises.userHasSubscription(user)
|
||||
if (hasSubscription && subscription != null) {
|
||||
await Modules.promises.hooks.fire('cancelPaidSubscription', subscription)
|
||||
const emailOpts = {
|
||||
to: user.email,
|
||||
first_name: user.first_name,
|
||||
}
|
||||
const ONE_HOUR_IN_MS = 1000 * 60 * 60
|
||||
EmailHandler.sendDeferredEmail(
|
||||
'canceledSubscription',
|
||||
emailOpts,
|
||||
ONE_HOUR_IN_MS
|
||||
)
|
||||
const { hasSubscription, subscription } =
|
||||
await LimitationsManager.promises.userHasSubscription(user)
|
||||
if (hasSubscription && subscription != null) {
|
||||
await Modules.promises.hooks.fire('cancelPaidSubscription', subscription)
|
||||
const emailOpts = {
|
||||
to: user.email,
|
||||
first_name: user.first_name,
|
||||
}
|
||||
} catch (err) {
|
||||
logger.warn(
|
||||
{ err, userId: user._id },
|
||||
'there was an error checking user v2 subscription'
|
||||
const ONE_HOUR_IN_MS = 1000 * 60 * 60
|
||||
EmailHandler.sendDeferredEmail(
|
||||
'canceledSubscription',
|
||||
emailOpts,
|
||||
ONE_HOUR_IN_MS
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user