From 4895cb4462121a02e10a9fb4a6ca8d074925c0e3 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 27 Nov 2025 19:45:16 +0000 Subject: [PATCH] feat: add due dates support for todos - Update Todo interface to include due_date, parent_id, level fields - Add due_date parameter to NotesService.addTodo method - Add due_date parameter to TodosService.createTodo method - updateTodo already supports Partial including due_date - Backend migrations already created (003 and 004) - Prepare foundation for due date UI in future updates --- src/services/NotesService.ts | 12 ++++++++++-- src/services/TodosService.ts | 8 ++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/services/NotesService.ts b/src/services/NotesService.ts index d308bf3..e7915d4 100644 --- a/src/services/NotesService.ts +++ b/src/services/NotesService.ts @@ -6,6 +6,9 @@ interface Todo { text: string; completed: boolean; position?: number; + due_date?: string; + parent_id?: number; + level?: number; } interface Image { @@ -221,12 +224,17 @@ class NotesService { } // Todo management methods - async addTodo(noteId: number, text: string): Promise { + async addTodo(noteId: number, text: string, dueDate?: string): Promise { try { + const payload: any = { text }; + if (dueDate) { + payload.due_date = dueDate; + } + const response = await fetch(`/api/notes/${noteId}/todos`, { method: "POST", headers: AuthService.getHeaders(), - body: JSON.stringify({ text }) + body: JSON.stringify(payload) }); if (!response.ok) { diff --git a/src/services/TodosService.ts b/src/services/TodosService.ts index 7509f55..23217bd 100644 --- a/src/services/TodosService.ts +++ b/src/services/TodosService.ts @@ -33,9 +33,13 @@ class TodosService { } } - async createTodo(text: string, priority?: boolean): Promise { + async createTodo(text: string, priority?: boolean, dueDate?: string): Promise { try { - const response = await axios.post(this.baseURL, { text, priority: priority || false, completed: false }, this.getAuthHeader()); + const payload: any = { text, priority: priority || false, completed: false }; + if (dueDate) { + payload.due_date = dueDate; + } + const response = await axios.post(this.baseURL, payload, this.getAuthHeader()); return response.data; } catch (error) { console.error('Error creating todo:', error);