Merge pull request #9798 from overleaf/ta-em-gs-best-subscription-fix

Fix Best Subscription Check

GitOrigin-RevId: a7ea5063d4287a421b96222763a59c15652c8d6f
This commit is contained in:
Timothée Alby
2022-10-18 08:03:01 +00:00
committed by Copybot
parent e699f3ca35
commit 2e70803492
3 changed files with 38 additions and 5 deletions
@@ -478,6 +478,7 @@ const ProjectController = {
}
SubscriptionViewModelBuilder.getBestSubscription(
{ _id: userId },
{ id: userId, ip: req.ip },
(err, subscription) => {
if (err) {
// do not fail loading the project list when fetching the best subscription fails
@@ -340,7 +340,7 @@ function buildUsersSubscriptionViewModel(user, callback) {
* @param {{_id: string}} user
* @returns {Promise<Subscription>}
*/
async function getBestSubscription(user) {
async function getBestSubscription(user, requesterData = {}) {
let [
individualSubscription,
memberGroupSubscriptions,
@@ -350,14 +350,19 @@ async function getBestSubscription(user) {
SubscriptionLocator.promises.getMemberSubscriptions(user),
InstitutionsGetter.promises.getCurrentInstitutionsWithLicence(user._id),
])
if (individualSubscription && !individualSubscription.recurly?.state) {
if (
individualSubscription &&
individualSubscription.recurlySubscription_id &&
!individualSubscription.recurly?.state
) {
const recurlySubscription = await RecurlyWrapper.promises.getSubscription(
individualSubscription.recurlySubscription_id,
{ includeAccount: true }
)
await SubscriptionUpdater.promises.updateSubscriptionFromRecurly(
recurlySubscription,
individualSubscription
individualSubscription,
requesterData
)
individualSubscription =
await SubscriptionLocator.promises.getUsersSubscription(user)