feat(Notes): associate notes with tasks and enhance note management
- Added taskId field to Note model for associating notes with tasks. - Updated API routes to handle taskId in note creation and updates. - Enhanced NotesPageClient to manage task associations within notes. - Integrated task selection in MarkdownEditor for better user experience. - Updated NotesService to map task data correctly when retrieving notes.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import { useState, useEffect, useCallback } from 'react';
|
||||
import { Note } from '@/services/notes';
|
||||
import { Task } from '@/lib/types';
|
||||
import { notesClient } from '@/clients/notes';
|
||||
import { NotesList } from '@/components/notes/NotesList';
|
||||
import { MarkdownEditor } from '@/components/notes/MarkdownEditor';
|
||||
@@ -118,6 +119,7 @@ function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
|
||||
const updatedNote = await notesClient.updateNote(selectedNote.id, {
|
||||
content: selectedNote.content,
|
||||
tags: selectedNote.tags,
|
||||
taskId: selectedNote.taskId,
|
||||
});
|
||||
|
||||
// Mettre à jour la liste des notes mais pas selectedNote pour éviter la perte de focus
|
||||
@@ -144,6 +146,18 @@ function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
|
||||
[selectedNote]
|
||||
);
|
||||
|
||||
const handleTaskChange = useCallback(
|
||||
(task: Task | null) => {
|
||||
if (!selectedNote) return;
|
||||
|
||||
setSelectedNote((prev) =>
|
||||
prev ? { ...prev, taskId: task?.id, task } : null
|
||||
);
|
||||
setHasUnsavedChanges(true);
|
||||
},
|
||||
[selectedNote]
|
||||
);
|
||||
|
||||
// Auto-save quand les tags changent
|
||||
useEffect(() => {
|
||||
if (hasUnsavedChanges && selectedNote) {
|
||||
@@ -258,6 +272,9 @@ function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
|
||||
tags={selectedNote.tags}
|
||||
onTagsChange={handleTagsChange}
|
||||
availableTags={availableTags}
|
||||
selectedTaskId={selectedNote.taskId}
|
||||
selectedTask={selectedNote.task}
|
||||
onTaskChange={handleTaskChange}
|
||||
onCreateNote={handleCreateNote}
|
||||
onToggleSidebar={() =>
|
||||
setSidebarCollapsed(!sidebarCollapsed)
|
||||
|
||||
Reference in New Issue
Block a user