diff --git a/website/client/src/components/tasks/taskModal.vue b/website/client/src/components/tasks/taskModal.vue index 218c4e3d53..13a72bad19 100644 --- a/website/client/src/components/tasks/taskModal.vue +++ b/website/client/src/components/tasks/taskModal.vue @@ -456,6 +456,7 @@ {{ $t('clear') }} @@ -1523,6 +1524,17 @@ export default { }); } }, + async clearAssignments () { + if (this.purpose === 'edit') { + for (const assignedMember of this.assignedMembers) { + await this.$store.dispatch('tasks:unassignTask', { // eslint-disable-line no-await-in-loop + taskId: this.task._id, + userId: assignedMember, + }); + } + } + this.assignedMembers = []; + }, focusInput () { this.$refs.inputToFocus.focus(); }, diff --git a/website/server/models/group.js b/website/server/models/group.js index c28050215c..d2e332fb45 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -1588,7 +1588,11 @@ schema.methods.unlinkTask = async function groupUnlinkTask ( }; delete unlinkingTask.group.assignedUsers[user._id]; + if (Object.keys(unlinkingTask.group.assignedUsers).length === 0) { + unlinkingTask.group.assignedUsers = undefined; + } unlinkingTask.markModified('group.assignedUsers'); + const promises = [unlinkingTask.save()]; if (keep === 'keep-all') {