From 9a6aef3a024faa6e30ef9a6afb2e55734eaf0755 Mon Sep 17 00:00:00 2001 From: Jessica Lawshe <5312836+lawshe@users.noreply.github.com> Date: Thu, 11 Apr 2024 08:26:30 -0500 Subject: [PATCH] Merge pull request #17817 from overleaf/jel-group-subscription-page [web] Only send necesssary group subscription data to frontened GitOrigin-RevId: bf49245e573bb9a1ec4bafc85cc6d0b7fd5f3e6f --- .../SubscriptionViewModelBuilder.js | 83 +++++++++++-------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js b/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js index 4bcb1e9988..e35b21abd5 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js +++ b/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js @@ -154,10 +154,59 @@ async function buildUsersSubscriptionViewModel(user) { if (memberGroupSubscriptions == null) { memberGroupSubscriptions = [] + } else { + memberGroupSubscriptions = memberGroupSubscriptions.map(group => { + const userIsGroupManager = group.manager_ids?.some( + id => id.toString() === user._id.toString() + ) + + const groupDataForView = { + _id: group._id, + planCode: group.planCode, + teamName: group.teamName, + admin_id: { + email: group.admin_id.email, + }, + userIsGroupManager, + } + + if (group.teamNotice) { + groupDataForView.teamNotice = sanitizeHtml(group.teamNotice) + } + + buildGroupSubscriptionForView(groupDataForView) + + return groupDataForView + }) } + if (managedGroupSubscriptions == null) { managedGroupSubscriptions = [] + } else { + managedGroupSubscriptions = managedGroupSubscriptions.map(group => { + const userIsGroupMember = group.member_ids?.some( + id => id.toString() === user._id.toString() + ) + + const groupDataForView = { + _id: group._id, + planCode: group.planCode, + groupPlan: group.groupPlan, + teamName: group.teamName, + admin_id: { + _id: group.admin_id._id, + email: group.admin_id.email, + }, + features: group.features, + userIsGroupMember, + } + + buildGroupSubscriptionForView(groupDataForView) + + return groupDataForView + }) } + if (managedInstitutions == null) { managedInstitutions = [] } @@ -166,12 +215,7 @@ async function buildUsersSubscriptionViewModel(user) { } personalSubscription = serializeMongooseObject(personalSubscription) - memberGroupSubscriptions = memberGroupSubscriptions.map( - serializeMongooseObject - ) - managedGroupSubscriptions = managedGroupSubscriptions.map( - serializeMongooseObject - ) + managedInstitutions = managedInstitutions.map(serializeMongooseObject) await Promise.all( managedInstitutions.map(InstitutionsManager.promises.fetchV1Data) @@ -296,33 +340,6 @@ async function buildUsersSubscriptionViewModel(user) { } } - for (const memberGroupSubscription of memberGroupSubscriptions) { - if ( - memberGroupSubscription.manager_ids?.some( - id => id.toString() === user._id.toString() - ) - ) { - memberGroupSubscription.userIsGroupManager = true - } - if (memberGroupSubscription.teamNotice) { - memberGroupSubscription.teamNotice = sanitizeHtml( - memberGroupSubscription.teamNotice - ) - } - buildGroupSubscriptionForView(memberGroupSubscription) - } - - for (const managedGroupSubscription of managedGroupSubscriptions) { - if ( - managedGroupSubscription.member_ids?.some( - id => id.toString() === user._id.toString() - ) - ) { - managedGroupSubscription.userIsGroupMember = true - } - buildGroupSubscriptionForView(managedGroupSubscription) - } - return { personalSubscription, managedGroupSubscriptions,