mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 14:17:22 +01:00
Merge pull request #11549 from Nikosmonaut/bugfix-11522_group_plan_tags
Fix can not remove group tag
This commit is contained in:
@@ -1164,6 +1164,23 @@ describe('Group Model', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('unlink group tag', async () => {
|
||||
participatingMember.tags.push({
|
||||
name: party.name,
|
||||
id: party._id,
|
||||
group: party._id,
|
||||
});
|
||||
|
||||
await participatingMember.save();
|
||||
await party.leave(participatingMember);
|
||||
|
||||
participatingMember = await User.findOne({ _id: participatingMember._id });
|
||||
const groupTag = participatingMember.tags.find(tag => tag.id === party._id);
|
||||
|
||||
expect(groupTag).to.not.be.undefined;
|
||||
expect(groupTag.group).to.be.undefined;
|
||||
});
|
||||
|
||||
it('deletes a private party when the last member leaves', async () => {
|
||||
await party.leave(participatingMember);
|
||||
await party.leave(sleepingParticipatingMember);
|
||||
|
||||
@@ -1345,6 +1345,8 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all', keepC
|
||||
.map(task => this.unlinkTask(task, user, keep, false));
|
||||
await Promise.all(assignedTasksToRemoveUserFrom);
|
||||
|
||||
this.unlinkTags(user);
|
||||
|
||||
// the user could be modified by calls to `unlinkTask` for challenge and group tasks
|
||||
// it has not been saved before to avoid multiple saves in parallel
|
||||
const promises = user.isModified() ? [user.save()] : [];
|
||||
@@ -1407,6 +1409,15 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all', keepC
|
||||
return Promise.all(promises);
|
||||
};
|
||||
|
||||
schema.methods.unlinkTags = function unlinkTags (user) {
|
||||
const group = this;
|
||||
user.tags.forEach(tag => {
|
||||
if (tag.group && tag.group === group._id) {
|
||||
tag.group = undefined;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates all linked tasks for a group task
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user