mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-14 21:27:23 +01:00
WIP(teams): reimplement open tasking
This commit is contained in:
@@ -208,26 +208,13 @@ api.assignTask = {
|
||||
const group = await Group.getGroup({ user, groupId: task.group.id, fields: groupFields });
|
||||
if (!group) throw new NotFound(res.t('groupNotFound'));
|
||||
|
||||
if (canNotEditTasks(group, user, assignedUserId)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
|
||||
if (canNotEditTasks(group, user)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
|
||||
|
||||
const promises = [];
|
||||
const taskText = task.text;
|
||||
const userName = `@${user.auth.local.username}`;
|
||||
|
||||
if (user._id === assignedUserId) {
|
||||
const managerIds = Object.keys(group.managers);
|
||||
managerIds.push(group.leader);
|
||||
const managers = await User.find({ _id: managerIds }, 'notifications preferences').exec();
|
||||
managers.forEach(manager => {
|
||||
if (manager._id === user._id) return;
|
||||
manager.addNotification('GROUP_TASK_CLAIMED', {
|
||||
message: res.t('taskClaimed', { userName, taskText }, manager.preferences.language),
|
||||
groupId: group._id,
|
||||
taskId: task._id,
|
||||
});
|
||||
promises.push(manager.save());
|
||||
});
|
||||
} else {
|
||||
if (user._id !== assignedUserId) {
|
||||
assignedUser.addNotification('GROUP_TASK_ASSIGNED', {
|
||||
message: res.t('youHaveBeenAssignedTask', { managerName: userName, taskText }),
|
||||
taskId: task._id,
|
||||
@@ -283,7 +270,7 @@ api.unassignTask = {
|
||||
const group = await Group.getGroup({ user, groupId: task.group.id, fields });
|
||||
if (!group) throw new NotFound(res.t('groupNotFound'));
|
||||
|
||||
if (canNotEditTasks(group, user, assignedUserId)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
|
||||
if (canNotEditTasks(group, user)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
|
||||
|
||||
await group.unlinkTask(task, assignedUser);
|
||||
|
||||
@@ -531,7 +518,7 @@ api.getGroupApprovals = {
|
||||
if (canNotEditTasks(group, user)) {
|
||||
approvals = await Tasks.Task.find({
|
||||
'group.id': groupId,
|
||||
'group.approval.approved': false,
|
||||
'group.approval.approved': { $ne: true },
|
||||
'group.approval.requested': true,
|
||||
'group.assignedUsers': user._id,
|
||||
userId: user._id,
|
||||
@@ -541,7 +528,7 @@ api.getGroupApprovals = {
|
||||
} else {
|
||||
approvals = await Tasks.Task.find({
|
||||
'group.id': groupId,
|
||||
'group.approval.approved': false,
|
||||
'group.approval.approved': { $ne: true },
|
||||
'group.approval.requested': true,
|
||||
}, 'userId group text')
|
||||
.populate('userId', 'profile')
|
||||
|
||||
Reference in New Issue
Block a user