From 20854057ad987630644d359cb46e3cabd76d57e9 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 23 Aug 2022 19:18:01 +0000 Subject: [PATCH 1/5] fix(migration): handle orphaned assignments --- migrations/tasks/team-tasks-v2.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/migrations/tasks/team-tasks-v2.js b/migrations/tasks/team-tasks-v2.js index 2b56a66627..a5c90cab95 100644 --- a/migrations/tasks/team-tasks-v2.js +++ b/migrations/tasks/team-tasks-v2.js @@ -26,7 +26,7 @@ async function updateTeamTasks (team) { const userTask = find(teamUserTasks, task => task.userId === assignedUserId && task.group.taskId === boardTask._id); if (!boardTask.group.assignedUsersDetail) boardTask.group.assignedUsersDetail = {}; - if (userTask) { + if (userTask && assignedUser) { boardTask.group.assignedUsersDetail[assignedUserId] = { assignedDate: userTask.group.assignedDate, assignedUsername: assignedUser.auth.local.username, @@ -34,8 +34,7 @@ async function updateTeamTasks (team) { completed: userTask.completed || false, completedDate: userTask.dateCompleted, }; - toSave.push(Tasks.Task.findByIdAndDelete(userTask._id)); - } else { + } else if (assignedUser) { boardTask.group.assignedUsersDetail[assignedUserId] = { assignedDate: new Date(), assignedUsername: assignedUser.auth.local.username, @@ -43,7 +42,11 @@ async function updateTeamTasks (team) { completed: false, completedDate: null, }; + } else { + const taskIndex = boardTask.group.assignedUsers.indexOf(assignedUserId); + boardTask.group.assignedUsers.splice(taskIndex, 1); } + if (userTask) toSave.push(Tasks.Task.findByIdAndDelete(userTask._id)); } boardTask.markModified('group'); toSave.push(boardTask.save()); From 75c8486b1a3f7bcc06e9d525865648afc8d50176 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 23 Aug 2022 14:38:05 -0500 Subject: [PATCH 2/5] fix(checklists): allow scoring own items --- website/server/controllers/api-v3/tasks.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/server/controllers/api-v3/tasks.js b/website/server/controllers/api-v3/tasks.js index a386420ad6..c937f5efb0 100644 --- a/website/server/controllers/api-v3/tasks.js +++ b/website/server/controllers/api-v3/tasks.js @@ -961,7 +961,8 @@ api.scoreCheckListItem = { if (!task || (!task.userId && !task.group.id)) throw new NotFound(res.t('messageTaskNotFound')); if (task.userId && task.userId !== user._id) { throw new BadRequest('Cannot score task belonging to another user.'); - } else if (user.guilds.indexOf(task.group.id) === -1 && user.party._id !== task.group.id) { + } else if (task.group.id && user.guilds.indexOf(task.group.id) === -1 + && user.party._id !== task.group.id) { throw new BadRequest('Cannot score task belonging to another user.'); } if (task.type !== 'daily' && task.type !== 'todo') throw new BadRequest(res.t('checklistOnlyDailyTodo')); From a2f191089c82bb84cf9820c6414bb773ef4341bc Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 23 Aug 2022 14:38:09 -0500 Subject: [PATCH 3/5] 4.241.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 021fc37420..156312dd24 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.241.0", + "version": "4.241.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 56d14f55a8..24d4463760 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.241.0", + "version": "4.241.1", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.18.10", From 1aae9638ecf285ee1d9989c745ded4c6c24e2be4 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 24 Aug 2022 11:05:19 -0500 Subject: [PATCH 4/5] fix(tasks): address regressions from group plan rollout --- .../group-plans/groupPlansUpdateModal.vue | 6 ++---- .../client/src/components/tasks/taskModal.vue | 4 +--- website/server/libs/tasks/index.js | 20 ++++++++++++++----- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/website/client/src/components/group-plans/groupPlansUpdateModal.vue b/website/client/src/components/group-plans/groupPlansUpdateModal.vue index e79c2dd39f..30205a0576 100644 --- a/website/client/src/components/group-plans/groupPlansUpdateModal.vue +++ b/website/client/src/components/group-plans/groupPlansUpdateModal.vue @@ -6,6 +6,7 @@ hide-footer="hide-footer" :no-close-on-backdrop="true" :no-close-on-esc="true" + :centered="true" >
@import '~@/assets/scss/colors.scss'; #group-plans-update { - overflow-y: hidden; - .modal-content { border-top-left-radius: 10px; border-top-right-radius: 10px; @@ -107,8 +106,7 @@ .modal-dialog { max-width: 566px; - margin-top: 50vh; - transform: translateY(-50%); + margin-top: 0px; } .modal-header { diff --git a/website/client/src/components/tasks/taskModal.vue b/website/client/src/components/tasks/taskModal.vue index 6a2d7b0372..0dae29e9a5 100644 --- a/website/client/src/components/tasks/taskModal.vue +++ b/website/client/src/components/tasks/taskModal.vue @@ -79,7 +79,6 @@
@@ -363,7 +361,7 @@
diff --git a/website/server/libs/tasks/index.js b/website/server/libs/tasks/index.js index 9dd0ef77d9..d32280fd3c 100644 --- a/website/server/libs/tasks/index.js +++ b/website/server/libs/tasks/index.js @@ -156,6 +156,7 @@ async function getTasks (req, res, options = {}) { let limit; let sort; let upgradedGroups = []; + const upgradedGroupIds = []; const owner = group || challenge || user; if (challenge) { @@ -179,15 +180,19 @@ async function getTasks (req, res, options = {}) { ).exec(); } if (upgradedGroups.length > 0) { - const upgradedGroupIds = []; for (const upgradedGroup of upgradedGroups) { upgradedGroupIds.push(upgradedGroup._id); } query = { $or: [ { userId: user._id }, - { 'group.assignedUsers': user._id }, - { 'group.id': { $in: upgradedGroupIds }, 'group.assignedUsers.0': { $exists: false } }, + { + 'group.id': { $in: upgradedGroupIds }, + $or: [ + { 'group.assignedUsers': user._id }, + { 'group.assignedUsers.0': { $exists: false } }, + ], + }, ], }; } else { @@ -214,8 +219,13 @@ async function getTasks (req, res, options = {}) { if (upgradedGroups.length > 0) { query.$or = [ { userId: user._id }, - { 'group.assignedUsers': user._id }, - { 'group.completedBy.userId': user._id }, + { + 'group.id': { $in: upgradedGroupIds }, + $or: [ + { 'group.assignedUsers': user._id }, + { 'group.completedBy.userId': user._id }, + ], + }, ]; } else if (owner._id === user._id) { query.userId = user._id; From bc8b1884b7e9bf125d3f0b489a9b7fa0899c9feb Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 24 Aug 2022 11:05:36 -0500 Subject: [PATCH 5/5] 4.241.2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 156312dd24..7c72e5b6b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.241.1", + "version": "4.241.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 24d4463760..036fb92395 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.241.1", + "version": "4.241.2", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.18.10",