mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-13 10:16:33 +02:00
Fix: Synchronisation des dates de modification et tags après sauvegarde
Problème :
- Après modification d'une note, il fallait rafraîchir la page pour voir updated_at
- Après ajout d'un tag, il fallait rafraîchir la page pour le voir dans la note
Solution backend :
1. routes/notes.routes.js - PUT /api/notes/:id :
- Récupération de la note mise à jour après UPDATE
- Retour de { message, note } au lieu de juste { message }
- La note retournée contient la vraie updated_at générée par PostgreSQL
Solution frontend :
1. NotesService.ts - updateNote() :
- Changement du type de retour de Promise<boolean> vers Promise<Note | null>
- Récupération et retour de la note mise à jour depuis la réponse du serveur
- Merge de la note locale (todos, images) avec les données du serveur (updated_at)
2. Index.tsx - handleNoteChange et handleContentChange :
- Utilisation de la note retournée par updateNote() au lieu de l'état local
- Mise à jour de openNote et notes avec les données du serveur
3. Index.tsx - Synchronisation des tags :
- loadNoteTags : Mise à jour de openNote.tags après chargement
- confirmAddTag : Mise à jour de openNote.tags après ajout
- handleDeleteTag : Mise à jour de openNote.tags après suppression
- Conversion du format { id, tag } vers { id, name } pour cohérence
Résultat :
- Les dates de modification s'affichent immédiatement après sauvegarde
- Les tags ajoutés apparaissent immédiatement dans l'interface
- Plus besoin de rafraîchir la page manuellement
This commit is contained in:
3 files changed
+67
-15
No files matched your search
@@ -85,9 +85,9 @@ class NotesService {
|
||||
}
|
||||
}
|
||||
|
||||
async updateNote(note: Note): Promise<boolean> {
|
||||
if (!note.id) return false;
|
||||
|
||||
async updateNote(note: Note): Promise<Note | null> {
|
||||
if (!note.id) return null;
|
||||
|
||||
try {
|
||||
const response = await fetch(`/api/notes/${note.id}`, {
|
||||
method: "PUT",
|
||||
@@ -98,15 +98,24 @@ class NotesService {
|
||||
images: note.images || []
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error("Erreur lors de la mise à jour de la note");
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
const result = await response.json();
|
||||
// Le backend retourne { message, note } avec la note mise à jour incluant updated_at
|
||||
if (result.note) {
|
||||
return {
|
||||
...note, // Garder les todos et images de l'état local
|
||||
...result.note // Écraser avec les données du serveur (updated_at, etc.)
|
||||
};
|
||||
}
|
||||
|
||||
return note; // Fallback si le backend ne retourne pas la note
|
||||
} catch (error) {
|
||||
showError(error instanceof Error ? error.message : "Erreur serveur");
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user