mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 14:17:22 +01:00
delete unread messages when a user leaves a group
closes #7955 closes #7965
This commit is contained in:
committed by
Blade Barringer
parent
8bb92577b0
commit
cb38475765
@@ -380,6 +380,13 @@ api.rejectGroupInvite = {
|
||||
},
|
||||
};
|
||||
|
||||
function _removeMessagesFromMember (member, groupId) {
|
||||
if (member.newMessages[groupId]) {
|
||||
delete member.newMessages[groupId];
|
||||
member.markModified('newMessages');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {post} /api/v3/groups/:groupId/leave Leave a group
|
||||
* @apiName LeaveGroup
|
||||
@@ -398,7 +405,6 @@ api.leaveGroup = {
|
||||
middlewares: [authWithHeaders()],
|
||||
async handler (req, res) {
|
||||
let user = res.locals.user;
|
||||
|
||||
req.checkParams('groupId', res.t('groupIdRequired')).notEmpty();
|
||||
// When removing the user from challenges, should we keep the tasks?
|
||||
req.checkQuery('keep', res.t('keepOrRemoveAll')).optional().isIn(['keep-all', 'remove-all']);
|
||||
@@ -412,7 +418,7 @@ api.leaveGroup = {
|
||||
throw new NotFound(res.t('groupNotFound'));
|
||||
}
|
||||
|
||||
// During quests, checke wheter user can leave
|
||||
// During quests, check if user can leave
|
||||
if (group.type === 'party') {
|
||||
if (group.quest && group.quest.leader === user._id) {
|
||||
throw new NotAuthorized(res.t('questLeaderCannotLeaveGroup'));
|
||||
@@ -424,6 +430,11 @@ api.leaveGroup = {
|
||||
}
|
||||
|
||||
await group.leave(user, req.query.keep);
|
||||
|
||||
_removeMessagesFromMember(user, group._id);
|
||||
|
||||
await user.save();
|
||||
|
||||
res.respond(200, {});
|
||||
},
|
||||
};
|
||||
@@ -518,10 +529,7 @@ api.removeGroupMember = {
|
||||
member.party._id = undefined; // TODO remove quest information too? Use group.leave()?
|
||||
}
|
||||
|
||||
if (member.newMessages[group._id]) {
|
||||
member.newMessages[group._id] = undefined;
|
||||
member.markModified('newMessages');
|
||||
}
|
||||
_removeMessagesFromMember(member, group._id);
|
||||
|
||||
if (group.quest && group.quest.active && group.quest.leader === member._id) {
|
||||
member.items.quests[group.quest.key] += 1;
|
||||
|
||||
Reference in New Issue
Block a user