Update group plan selection to include expired plans

This commit is contained in:
Hafiz
2026-01-13 12:40:20 -06:00
parent f6cc11771f
commit 9712d78fd3
3 changed files with 14 additions and 5 deletions
@@ -393,6 +393,8 @@ export default {
...mapState({ user: 'user.data' }),
upgradeableGuilds () {
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;
if (this.activeGroupPlanIds.includes(group._id)) return false;
@@ -421,7 +423,7 @@ export default {
try {
const [guildsResponse, partyResponse] = await Promise.all([
axios.get('/api/v4/groups', { params: { type: 'guilds' } }),
axios.get('/api/v4/groups', { params: { type: 'guilds', includeExpiredPlans: 'true' } }),
axios.get('/api/v4/groups/party').catch(() => ({ data: { data: null } })),
]);
@@ -371,6 +371,10 @@ api.getGroups = {
filters.$or.push({ description: searchQuery });
}
if (req.query.includeExpiredPlans === 'true') {
filters.includeExpiredPlans = true;
}
const results = await Group.getGroups({
user,
types,
+7 -4
View File
@@ -309,13 +309,16 @@ schema.statics.getGroups = async function getGroups (options = {}) {
privacy: 'private',
_id: { $in: user.guilds },
'purchased.plan.customerId': { $exists: true },
$or: [
};
if (!filters.includeExpiredPlans) {
query.$or = [
{ 'purchased.plan.dateTerminated': null },
{ 'purchased.plan.dateTerminated': { $exists: false } },
{ 'purchased.plan.dateTerminated': { $gt: new Date() } },
],
};
_.assign(query, filters);
];
}
const filtersWithoutCustom = _.omit(filters, ['includeExpiredPlans']);
_.assign(query, filtersWithoutCustom);
const privateGuildsQuery = this.find(query).select(groupFields);
if (populateLeader === true) privateGuildsQuery.populate('leader', nameFields);
privateGuildsQuery.sort(sort);