diff --git a/website/client/src/components/group-plans/groupPlanSelectionModal.vue b/website/client/src/components/group-plans/groupPlanSelectionModal.vue index f0fd5459f3..6619eb60df 100644 --- a/website/client/src/components/group-plans/groupPlanSelectionModal.vue +++ b/website/client/src/components/group-plans/groupPlanSelectionModal.vue @@ -395,11 +395,11 @@ export default { return this.userGuilds.filter(group => { const leaderId = group.leader?._id || group.leader; if (leaderId !== this.user._id) return false; - const plan = group.purchased?.plan; - if (!plan?.customerId) return false; + const purchased = group.purchased; + if (!purchased?.wasUpgraded) return false; if (this.activeGroupPlanIds.includes(group._id)) return false; - if (!plan.dateTerminated) return false; - return new Date(plan.dateTerminated) < new Date(); + if (!purchased.dateTerminated) return false; + return new Date(purchased.dateTerminated) < new Date(); }); }, upgradeableParty () { diff --git a/website/server/models/group.js b/website/server/models/group.js index 590e4e1733..451372bebb 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -156,7 +156,17 @@ schema.plugin(baseModel, { noSet: ['_id', 'balance', 'quest', 'memberCount', 'chat', 'bannedWordsAllowed', 'challengeCount', 'tasksOrder', 'purchased', 'managers'], private: ['purchased.plan'], toJSONTransform (plainObj, originalDoc) { - if (plainObj.purchased) plainObj.purchased.active = originalDoc.hasActiveGroupPlan(); + if (plainObj.purchased) { + plainObj.purchased.active = originalDoc.hasActiveGroupPlan(); + // Expose non-sensitive plan info for upgrade flow + const plan = originalDoc.purchased?.plan; + if (plan?.customerId) { + plainObj.purchased.wasUpgraded = true; + if (plan.dateTerminated) { + plainObj.purchased.dateTerminated = plan.dateTerminated; + } + } + } }, });