mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-09 06:06:01 +00:00
DRY logic to get subscription from Recurly
We were making two calls to recurly: one from the SubscriptionController and another from the SubscriptionViewModelBuilder. This change moves all the logic to the builder so we only have to do one call.
This commit is contained in:
parent
79eddcc736
commit
6d007bfe74
2 changed files with 31 additions and 37 deletions
|
@ -97,39 +97,21 @@ module.exports = SubscriptionController =
|
|||
logger.log user: user, "redirecting to plans"
|
||||
res.redirect "/user/subscription/plans"
|
||||
else
|
||||
RecurlyWrapper.getSubscription subscription?.recurlySubscription_id,
|
||||
includeAccount: true,
|
||||
(err, usersSubscription)->
|
||||
# always render the page, but skip the recurly link if
|
||||
# we can't get it for some reason
|
||||
if err?
|
||||
logger.err {err, userId: user._id}, "error getting billing details link from recurly, proceeding"
|
||||
hostedLoginToken = usersSubscription?.account?.hosted_login_token
|
||||
recurlySubdomain = Settings?.apis?.recurly?.subdomain
|
||||
if err? || !hostedLoginToken || !recurlySubdomain
|
||||
billingDetailsLink = null
|
||||
else
|
||||
billingDetailsLink = [
|
||||
"https://",
|
||||
recurlySubdomain,
|
||||
".recurly.com/account/billing_info/edit?ht=",
|
||||
hostedLoginToken
|
||||
].join("")
|
||||
SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel user, (error, subscription, groupSubscriptions) ->
|
||||
return next(error) if error?
|
||||
logger.log {user, subscription, hasSubOrIsGroupMember, groupSubscriptions, billingDetailsLink}, "showing subscription dashboard"
|
||||
plans = SubscriptionViewModelBuilder.buildViewModel()
|
||||
res.render "subscriptions/dashboard",
|
||||
title: "your_subscription"
|
||||
recomendedCurrency: subscription?.currency
|
||||
taxRate:subscription?.taxRate
|
||||
plans: plans
|
||||
subscription: subscription || {}
|
||||
groupSubscriptions: groupSubscriptions
|
||||
subscriptionTabActive: true
|
||||
user:user
|
||||
saved_billing_details: req.query.saved_billing_details?
|
||||
billingDetailsLink: billingDetailsLink
|
||||
SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel user, (error, subscription, groupSubscriptions, billingDetailsLink) ->
|
||||
return next(error) if error?
|
||||
logger.log {user, subscription, hasSubOrIsGroupMember, groupSubscriptions, billingDetailsLink}, "showing subscription dashboard"
|
||||
plans = SubscriptionViewModelBuilder.buildViewModel()
|
||||
res.render "subscriptions/dashboard",
|
||||
title: "your_subscription"
|
||||
recomendedCurrency: subscription?.currency
|
||||
taxRate:subscription?.taxRate
|
||||
plans: plans
|
||||
subscription: subscription || {}
|
||||
groupSubscriptions: groupSubscriptions
|
||||
subscriptionTabActive: true
|
||||
user:user
|
||||
saved_billing_details: req.query.saved_billing_details?
|
||||
billingDetailsLink: billingDetailsLink
|
||||
|
||||
userCustomSubscriptionPage: (req, res, next)->
|
||||
user = AuthenticationController.getSessionUser(req)
|
||||
|
|
|
@ -7,8 +7,20 @@ SubscriptionLocator = require("./SubscriptionLocator")
|
|||
logger = require('logger-sharelatex')
|
||||
_ = require("underscore")
|
||||
|
||||
module.exports =
|
||||
|
||||
buildBillingDetails = (recurlySubscription) ->
|
||||
hostedLoginToken = recurlySubscription?.account?.hosted_login_token
|
||||
recurlySubdomain = Settings?.apis?.recurly?.subdomain
|
||||
|
||||
if hostedLoginToken? && recurlySubdomain?
|
||||
return [
|
||||
"https://",
|
||||
recurlySubdomain,
|
||||
".recurly.com/account/billing_info/edit?ht=",
|
||||
hostedLoginToken
|
||||
].join("")
|
||||
|
||||
module.exports =
|
||||
buildUsersSubscriptionViewModel: (user, callback = (error, subscription, memberSubscriptions) ->) ->
|
||||
SubscriptionLocator.getUsersSubscription user, (err, subscription) ->
|
||||
return callback(err) if err?
|
||||
|
@ -21,7 +33,7 @@ module.exports =
|
|||
err = new Error("No plan found for planCode '#{subscription.planCode}'")
|
||||
logger.error {user_id: user._id, err}, "error getting subscription plan for user"
|
||||
return callback(err)
|
||||
RecurlyWrapper.getSubscription subscription.recurlySubscription_id, (err, recurlySubscription)->
|
||||
RecurlyWrapper.getSubscription subscription.recurlySubscription_id, includeAccount: true, (err, recurlySubscription)->
|
||||
tax = recurlySubscription?.tax_in_cents || 0
|
||||
callback null, {
|
||||
admin_id:subscription.admin_id
|
||||
|
@ -34,9 +46,9 @@ module.exports =
|
|||
taxRate:parseFloat(recurlySubscription?.tax_rate?._)
|
||||
groupPlan: subscription.groupPlan
|
||||
trial_ends_at:recurlySubscription?.trial_ends_at
|
||||
}, memberSubscriptions
|
||||
}, memberSubscriptions, buildBillingDetails(recurlySubscription)
|
||||
else
|
||||
callback null, null, memberSubscriptions
|
||||
callback null, null, memberSubscriptions, null
|
||||
|
||||
buildViewModel : ->
|
||||
plans = Settings.plans
|
||||
|
|
Loading…
Add table
Reference in a new issue