diff --git a/src/db/todoSchemas.d.ts b/src/db/todoSchemas.d.ts index b80c7e1..18ff4ce 100644 --- a/src/db/todoSchemas.d.ts +++ b/src/db/todoSchemas.d.ts @@ -8,4 +8,5 @@ interface Todo { interface TodoDetail { description: string; + importance: boolean; } diff --git a/src/todomanager/Detail.tsx b/src/todomanager/Detail.tsx index 0df2ce0..42cfb2a 100644 --- a/src/todomanager/Detail.tsx +++ b/src/todomanager/Detail.tsx @@ -22,25 +22,11 @@ function Detail({ id, onBack }: { id: string; onBack: () => void }) { const { name, value, checked } = e.target; if (selectedTodo) { - setSelectedTodo(prevTodo => { - if (!prevTodo) return prevTodo; - switch (name) { - case 'isComplete': - return { - ...prevTodo, - isComplete: checked, - }; - case 'dueDate': - return { - ...prevTodo, - dueDate: new Date(value), - }; - default: - return { - ...prevTodo, - [name]: value, - }; - } + setSelectedTodo({ + ...selectedTodo, + [name]: value, + [name]: name === 'isComplete' ? checked : value, + [name]: name === 'dueDate' ? new Date(value) : value, }); updateTodo({ ...selectedTodo, @@ -53,15 +39,12 @@ function Detail({ id, onBack }: { id: string; onBack: () => void }) { const { name, value } = e.target; if (selectedTodo) { - setSelectedTodo(prevTodo => { - if (!prevTodo) return prevTodo; - return { - ...prevTodo, - todoDetail: { - ...prevTodo.todoDetail, - [name]: value, - }, - }; + setSelectedTodo({ + ...selectedTodo, + todoDetail: { + ...selectedTodo.todoDetail, + [name]: value, + }, }); updateTodo({ ...selectedTodo, @@ -73,6 +56,25 @@ function Detail({ id, onBack }: { id: string; onBack: () => void }) { } }; + const handleImportance = () => { + if (selectedTodo) { + const newImportance = !selectedTodo.todoDetail.importance; + + setSelectedTodo({ + ...selectedTodo, + todoDetail: { ...selectedTodo.todoDetail, importance: newImportance }, + }); + + updateTodo({ + ...selectedTodo, + todoDetail: { + ...selectedTodo.todoDetail, + importance: newImportance, + }, + }); + } + }; + useEffect(() => { fetchTodo(); }, [id]); @@ -91,6 +93,25 @@ function Detail({ id, onBack }: { id: string; onBack: () => void }) { {!isModify ? (