From 1a3c5c22d715380298acd5174d209d6bf98758fb Mon Sep 17 00:00:00 2001 From: ToBinio Date: Mon, 16 Mar 2026 08:40:42 +0100 Subject: [PATCH] add way to uncheck recurring todo --- app/components/todo/Todo.vue | 41 +++++++++++++++++-------- app/stores/useTodoStore.ts | 18 +++++++++++ server/api/todos/check/[uuid].delete.ts | 20 ++++++++++++ server/utils/db/todos.ts | 19 ++++++++++++ 4 files changed, 85 insertions(+), 13 deletions(-) create mode 100644 server/api/todos/check/[uuid].delete.ts diff --git a/app/components/todo/Todo.vue b/app/components/todo/Todo.vue index fc031ca..618a0f4 100644 --- a/app/components/todo/Todo.vue +++ b/app/components/todo/Todo.vue @@ -19,18 +19,37 @@ const checked = ref(isChecked(props.data)); const todoStore = useTodoStore(); - function onCheck() { - checked.value = true; - + function onClickCheck() { if (props.data.time?.type === "recurring") { - todoStore.checkTodo(props.data.uuid); + if (checked.value) { + uncheck(); + } else { + check(); + } } else { - setTimeout(() => { - todoStore.removeTodo(props.data.uuid); - }, 1000); + if (!checked.value) { + remove(); + } } } + function remove() { + checked.value = true; + setTimeout(() => { + todoStore.removeTodo(props.data.uuid); + }, 1000); + } + + function check() { + checked.value = true; + todoStore.checkTodo(props.data.uuid); + } + + function uncheck() { + checked.value = false; + todoStore.uncheckTodo(props.data.uuid); + } + const { filter } = useFilter(); const tagStore = useTagStore(); const categoryStore = useCategoryStore(); @@ -80,12 +99,7 @@