From 126ae41d31e67c9f1a5936f6f499c51fa369c3c5 Mon Sep 17 00:00:00 2001 From: alma Date: Sun, 20 Apr 2025 18:31:59 +0200 Subject: [PATCH] carnet panel --- app/carnet/page.tsx | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/app/carnet/page.tsx b/app/carnet/page.tsx index 9f98c494..3c67fe93 100644 --- a/app/carnet/page.tsx +++ b/app/carnet/page.tsx @@ -37,6 +37,7 @@ export default function CarnetPage() { const [showNotes, setShowNotes] = useState(true); const [nextcloudFolders, setNextcloudFolders] = useState([]); const [selectedFolder, setSelectedFolder] = useState('Notes'); + const [notes, setNotes] = useState([]); // Panel widths state const [navWidth, setNavWidth] = useState(220); @@ -137,9 +138,37 @@ export default function CarnetPage() { } }; - const handleNoteSave = (note: Note) => { - // TODO: Implement note saving logic - console.log('Saving note:', note); + const handleNoteSave = async (note: Note) => { + try { + const response = await fetch('/api/nextcloud/files', { + method: note.id ? 'PUT' : 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + id: note.id, + title: note.title, + content: note.content, + folder: selectedFolder + }), + }); + + if (!response.ok) { + throw new Error('Failed to save note'); + } + + const savedNote = await response.json(); + setSelectedNote(savedNote); + + // Refresh the notes list + const notesResponse = await fetch(`/api/nextcloud/files?folder=${selectedFolder}`); + if (notesResponse.ok) { + const notes = await notesResponse.json(); + setNotes(notes); + } + } catch (error) { + console.error('Error saving note:', error); + } }; const handleFolderSelect = (folder: string) => { @@ -183,8 +212,6 @@ export default function CarnetPage() { style={{ width: `${navWidth}px` }} >