From 25b33102f15dcc31a55657a0bce448130e791ad6 Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 11 Sep 2025 15:53:27 +0200 Subject: [PATCH] fix(task): only save description when clicking away if it actually changed --- .../components/tasks/partials/Description.vue | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/frontend/src/components/tasks/partials/Description.vue b/frontend/src/components/tasks/partials/Description.vue index 778fa79b6..593e35d56 100644 --- a/frontend/src/components/tasks/partials/Description.vue +++ b/frontend/src/components/tasks/partials/Description.vue @@ -60,8 +60,10 @@ const emit = defineEmits<{ }>() const description = ref('') +const hasChanges = ref(false) watchEffect(() => { description.value = props.modelValue.description + hasChanges.value = false }) const saved = ref(false) @@ -79,6 +81,15 @@ onMounted(() => { }) async function saveWithDelay() { + if (description.value === props.modelValue.description) { + hasChanges.value = false + if (changeTimeout.value !== null) { + clearTimeout(changeTimeout.value) + } + return + } + + hasChanges.value = true if (changeTimeout.value !== null) { clearTimeout(changeTimeout.value) } @@ -99,6 +110,11 @@ onBeforeUnmount(async () => { onBeforeRouteLeave(() => save()) async function save() { + if (!hasChanges.value) { + return + } + + hasChanges.value = false if (changeTimeout.value !== null) { clearTimeout(changeTimeout.value) } @@ -121,6 +137,7 @@ async function save() { if (error?.response?.status === 404) { return } + hasChanges.value = true // Re-throw other errors throw error } finally {