mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
WIP(multiassign): resume shared completion implementation
This commit is contained in:
@@ -1,30 +1,18 @@
|
||||
import * as Tasks from '../models/task'; // eslint-disable-line import/no-cycle
|
||||
|
||||
const SHARED_COMPLETION = {
|
||||
default: 'recurringCompletion',
|
||||
single: 'singleCompletion',
|
||||
every: 'allAssignedCompletion',
|
||||
};
|
||||
|
||||
async function _deleteUnfinishedTasks (groupMemberTask) {
|
||||
await Tasks.Task.deleteMany({
|
||||
'group.taskId': groupMemberTask.group.taskId,
|
||||
$and: [
|
||||
{ userId: { $exists: true } },
|
||||
{ userId: { $ne: groupMemberTask.userId } },
|
||||
],
|
||||
}).exec();
|
||||
}
|
||||
|
||||
async function handleSharedCompletion (masterTask, groupMemberTask) {
|
||||
if (masterTask.type === 'reward') return;
|
||||
if (masterTask.type === 'todo') await _deleteUnfinishedTasks(groupMemberTask);
|
||||
masterTask.completed = groupMemberTask.completed;
|
||||
masterTask.group.completedBy = groupMemberTask.userId;
|
||||
await masterTask.save();
|
||||
async function handleSharedCompletion (teamTask) {
|
||||
if (teamTask.type === 'reward') return;
|
||||
const incompleteTask = await Tasks.Task.findOne({
|
||||
'group.taskId': teamTask._id,
|
||||
userId: { $exists: true },
|
||||
completed: false,
|
||||
}, { _id: 1 }).exec();
|
||||
if (!incompleteTask) {
|
||||
teamTask.completed = true;
|
||||
teamTask.save();
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
SHARED_COMPLETION,
|
||||
handleSharedCompletion,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user