From 657e9a541391fd39b8152820aa9c35de527ceb97 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 17 Jun 2024 15:49:28 +0200 Subject: [PATCH] fix(task): do not move task dates when undoing a repeated task Resolves https://community.vikunja.io/t/undo-on-repeated-task-moves-dates-forward/970 --- .../tasks/partials/SingleTaskInProject.vue | 18 +++++++++++++++--- frontend/src/i18n/lang/en.json | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/tasks/partials/SingleTaskInProject.vue b/frontend/src/components/tasks/partials/SingleTaskInProject.vue index 48eb3d7a8..9f52364b1 100644 --- a/frontend/src/components/tasks/partials/SingleTaskInProject.vue +++ b/frontend/src/components/tasks/partials/SingleTaskInProject.vue @@ -296,11 +296,21 @@ useIntervalFn(updateDueDate, 60_000, { }) onMounted(updateDueDate) +let oldTask -async function markAsDone(checked: boolean) { +async function markAsDone(checked: boolean, wasReverted: boolean = false) { const updateFunc = async () => { + oldTask = {...task.value} const newTask = await taskStore.update(task.value) task.value = newTask + + updateDueDate() + + if (wasReverted) { + success({message: t('task.revertSuccess')}) + return + } + if (checked && useAuthStore().settings.frontendSettings.playSoundWhenDone) { playPopSound() } @@ -315,7 +325,6 @@ async function markAsDone(checked: boolean) { title: t('task.undo'), callback: () => undoDone(checked), }]) - updateDueDate() } if (checked) { @@ -326,8 +335,11 @@ async function markAsDone(checked: boolean) { } function undoDone(checked: boolean) { + if (isRepeating.value) { + task.value = {...oldTask} + } task.value.done = !task.value.done - markAsDone(!checked) + markAsDone(!checked, true) } async function toggleFavorite() { diff --git a/frontend/src/i18n/lang/en.json b/frontend/src/i18n/lang/en.json index da7805764..5082cace6 100644 --- a/frontend/src/i18n/lang/en.json +++ b/frontend/src/i18n/lang/en.json @@ -733,6 +733,7 @@ "addReminder": "Add a reminder…", "doneSuccess": "The task was successfully marked as done.", "undoneSuccess": "The task was successfully un-marked as done.", + "revertSuccess": "The task change was successfully undone.", "undo": "Undo", "openDetail": "Open task detail view", "checklistTotal": "{checked} of {total} tasks",