mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
fix(cron): actually process cron for assigned tasks
This commit is contained in:
@@ -82,7 +82,7 @@ async function cronAsync (req, res) {
|
|||||||
{
|
{
|
||||||
$or: [
|
$or: [
|
||||||
{ userId: user._id },
|
{ userId: user._id },
|
||||||
{ userId: { $exists: false }, 'group.id': { $in: teamsLed } },
|
{ userId: { $exists: false }, 'group.id': { $in: teamsLed }, 'group.assignedUsers': { $size: 0 } },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -141,20 +141,36 @@ async function cronAsync (req, res) {
|
|||||||
|
|
||||||
// Save user and tasks
|
// Save user and tasks
|
||||||
const toSave = [user.save()];
|
const toSave = [user.save()];
|
||||||
tasks.forEach(async task => {
|
const groupTasks = [];
|
||||||
|
const groupTasksByType = {
|
||||||
|
habits: [], dailys: [], todos: [], rewards: [],
|
||||||
|
};
|
||||||
|
for (const task of tasks) {
|
||||||
if (task.isModified()) toSave.push(task.save());
|
if (task.isModified()) toSave.push(task.save());
|
||||||
if (task.isModified() && task.group && task.group.taskId) {
|
if (task.isModified() && task.group && task.group.taskId) {
|
||||||
const groupTask = await Tasks.Task.findOne({
|
const groupTask = await Tasks.Task.findOne({ // eslint-disable-line no-await-in-loop
|
||||||
_id: task.group.taskId,
|
_id: task.group.taskId,
|
||||||
}).exec();
|
}).exec();
|
||||||
|
|
||||||
if (groupTask) {
|
if (groupTask) {
|
||||||
let delta = (0.9747 ** task.value) * -1;
|
groupTasks.push(groupTask);
|
||||||
if (groupTask.group.assignedUsers) delta /= groupTask.group.assignedUsers.length;
|
groupTasksByType[`${groupTask.type}s`].push(groupTask);
|
||||||
await groupTask.scoreChallengeTask(delta, 'down');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (groupTasks.length > 0) {
|
||||||
|
await cron({
|
||||||
|
user,
|
||||||
|
tasksByType: groupTasksByType,
|
||||||
|
now,
|
||||||
|
daysMissed,
|
||||||
|
analytics,
|
||||||
|
timezoneUtcOffsetFromUserPrefs,
|
||||||
|
headers: req.headers,
|
||||||
});
|
});
|
||||||
|
groupTasks.forEach(async cronnedGroupTask => {
|
||||||
|
if (cronnedGroupTask.isModified()) toSave.push(cronnedGroupTask.save());
|
||||||
|
});
|
||||||
|
}
|
||||||
await Promise.all(toSave);
|
await Promise.all(toSave);
|
||||||
|
|
||||||
await Group.processQuestProgress(user, progress);
|
await Group.processQuestProgress(user, progress);
|
||||||
|
|||||||
Reference in New Issue
Block a user