diff --git a/app/carnet/page.tsx b/app/carnet/page.tsx index 887a07f4..efb62908 100644 --- a/app/carnet/page.tsx +++ b/app/carnet/page.tsx @@ -38,6 +38,7 @@ export default function CarnetPage() { const [nextcloudFolders, setNextcloudFolders] = useState([]); const [selectedFolder, setSelectedFolder] = useState('Notes'); const [notes, setNotes] = useState([]); + const [isLoadingNotes, setIsLoadingNotes] = useState(true); // Panel widths state const [navWidth, setNavWidth] = useState(220); @@ -114,6 +115,27 @@ export default function CarnetPage() { } }, [isSmallScreen, isMediumScreen]); + useEffect(() => { + const fetchNotes = async () => { + try { + setIsLoadingNotes(true); + const response = await fetch(`/api/nextcloud/files?folder=${selectedFolder}`); + if (!response.ok) { + throw new Error('Failed to fetch notes'); + } + const data = await response.json(); + setNotes(data); + } catch (error) { + console.error('Error fetching notes:', error); + setNotes([]); + } finally { + setIsLoadingNotes(false); + } + }; + + fetchNotes(); + }, [selectedFolder]); + // Handle panel resizing const handleNavResize = (e: MouseEvent) => { if (!isDraggingNav) return; @@ -232,6 +254,8 @@ export default function CarnetPage() { <>
void; currentFolder?: string; onNewNote?: () => void; + loading?: boolean; } -export const NotesView: React.FC = ({ onNoteSelect, currentFolder = 'Notes', onNewNote }) => { +export const NotesView: React.FC = ({ + notes, + onNoteSelect, + currentFolder = 'Notes', + onNewNote, + loading = false +}) => { const [searchQuery, setSearchQuery] = useState(''); - const [notes, setNotes] = useState([]); - const [loading, setLoading] = useState(true); - - useEffect(() => { - const fetchNotes = async () => { - try { - setLoading(true); - const response = await fetch(`/api/nextcloud/files?folder=${currentFolder}`); - if (!response.ok) { - throw new Error('Failed to fetch notes'); - } - const data = await response.json(); - setNotes(data); - } catch (err) { - console.error('Error fetching notes:', err); - setNotes([]); - } finally { - setLoading(false); - } - }; - - fetchNotes(); - }, [currentFolder]); const formatDate = (dateString: string) => { return format(new Date(dateString), 'EEEE d MMM yyyy', { locale: fr });