mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
Correct timing on updating Group Plan member quantities (#10589)
* fix(groups): correct timing on updating member quantities * fix(groups): don't run group cancellation check if we're in invite flow * fix(groups): update leader when memberCount is 1 * fix(groups): move leader update back--unrelated to group plans fix
This commit is contained in:
@@ -590,11 +590,6 @@ api.joinGroup = {
|
|||||||
// @TODO: Review the need for this and if still needed, don't base this on memberCount
|
// @TODO: Review the need for this and if still needed, don't base this on memberCount
|
||||||
if (!group.hasNotCancelled() && group.memberCount === 0) group.leader = user._id; // If new user is only member -> set as leader
|
if (!group.hasNotCancelled() && group.memberCount === 0) group.leader = user._id; // If new user is only member -> set as leader
|
||||||
|
|
||||||
if (group.hasNotCancelled()) {
|
|
||||||
await payments.addSubToGroupUser(user, group);
|
|
||||||
await group.updateGroupPlan();
|
|
||||||
}
|
|
||||||
|
|
||||||
group.memberCount += 1;
|
group.memberCount += 1;
|
||||||
|
|
||||||
let promises = [group.save(), user.save()];
|
let promises = [group.save(), user.save()];
|
||||||
@@ -638,6 +633,11 @@ api.joinGroup = {
|
|||||||
|
|
||||||
promises = await Promise.all(promises);
|
promises = await Promise.all(promises);
|
||||||
|
|
||||||
|
if (group.hasNotCancelled()) {
|
||||||
|
await payments.addSubToGroupUser(user, group);
|
||||||
|
await group.updateGroupPlan();
|
||||||
|
}
|
||||||
|
|
||||||
let response = await Group.toJSONCleanChat(promises[0], user);
|
let response = await Group.toJSONCleanChat(promises[0], user);
|
||||||
let leader = await User.findById(response.leader).select(nameFields).exec();
|
let leader = await User.findById(response.leader).select(nameFields).exec();
|
||||||
if (leader) {
|
if (leader) {
|
||||||
@@ -790,7 +790,6 @@ api.leaveGroup = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await group.leave(user, req.query.keep, req.body.keepChallenges);
|
await group.leave(user, req.query.keep, req.body.keepChallenges);
|
||||||
if (group.hasNotCancelled()) await group.updateGroupPlan(true);
|
|
||||||
_removeMessagesFromMember(user, group._id);
|
_removeMessagesFromMember(user, group._id);
|
||||||
await user.save();
|
await user.save();
|
||||||
|
|
||||||
@@ -804,6 +803,7 @@ api.leaveGroup = {
|
|||||||
await payments.cancelGroupSubscriptionForUser(user, group);
|
await payments.cancelGroupSubscriptionForUser(user, group);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (group.hasNotCancelled()) await group.updateGroupPlan(true);
|
||||||
res.respond(200, {});
|
res.respond(200, {});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -892,10 +892,6 @@ api.removeGroupMember = {
|
|||||||
|
|
||||||
if (isInGroup) {
|
if (isInGroup) {
|
||||||
group.memberCount -= 1;
|
group.memberCount -= 1;
|
||||||
if (group.hasNotCancelled()) {
|
|
||||||
await group.updateGroupPlan(true);
|
|
||||||
await payments.cancelGroupSubscriptionForUser(member, group, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (group.quest && group.quest.leader === member._id) {
|
if (group.quest && group.quest.leader === member._id) {
|
||||||
group.quest.key = undefined;
|
group.quest.key = undefined;
|
||||||
@@ -944,6 +940,12 @@ api.removeGroupMember = {
|
|||||||
member.save(),
|
member.save(),
|
||||||
group.save(),
|
group.save(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (isInGroup && group.hasNotCancelled()) {
|
||||||
|
await group.updateGroupPlan(true);
|
||||||
|
await payments.cancelGroupSubscriptionForUser(member, group, true);
|
||||||
|
}
|
||||||
|
|
||||||
res.respond(200, {});
|
res.respond(200, {});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user