carnet panel
This commit is contained in:
parent
dff3a24347
commit
c9d483223d
@ -38,6 +38,7 @@ export default function CarnetPage() {
|
|||||||
const [nextcloudFolders, setNextcloudFolders] = useState<string[]>([]);
|
const [nextcloudFolders, setNextcloudFolders] = useState<string[]>([]);
|
||||||
const [selectedFolder, setSelectedFolder] = useState<string>('Notes');
|
const [selectedFolder, setSelectedFolder] = useState<string>('Notes');
|
||||||
const [notes, setNotes] = useState<Note[]>([]);
|
const [notes, setNotes] = useState<Note[]>([]);
|
||||||
|
const [isLoadingNotes, setIsLoadingNotes] = useState(true);
|
||||||
|
|
||||||
// Panel widths state
|
// Panel widths state
|
||||||
const [navWidth, setNavWidth] = useState(220);
|
const [navWidth, setNavWidth] = useState(220);
|
||||||
@ -114,6 +115,27 @@ export default function CarnetPage() {
|
|||||||
}
|
}
|
||||||
}, [isSmallScreen, isMediumScreen]);
|
}, [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
|
// Handle panel resizing
|
||||||
const handleNavResize = (e: MouseEvent) => {
|
const handleNavResize = (e: MouseEvent) => {
|
||||||
if (!isDraggingNav) return;
|
if (!isDraggingNav) return;
|
||||||
@ -232,6 +254,8 @@ export default function CarnetPage() {
|
|||||||
<>
|
<>
|
||||||
<div className="flex-1 overflow-hidden">
|
<div className="flex-1 overflow-hidden">
|
||||||
<NotesView
|
<NotesView
|
||||||
|
notes={notes}
|
||||||
|
loading={isLoadingNotes}
|
||||||
onNoteSelect={handleNoteSelect}
|
onNoteSelect={handleNoteSelect}
|
||||||
currentFolder={selectedFolder}
|
currentFolder={selectedFolder}
|
||||||
onNewNote={handleNewNote}
|
onNewNote={handleNewNote}
|
||||||
|
|||||||
@ -16,36 +16,21 @@ interface Note {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface NotesViewProps {
|
interface NotesViewProps {
|
||||||
|
notes: Note[];
|
||||||
onNoteSelect?: (note: Note) => void;
|
onNoteSelect?: (note: Note) => void;
|
||||||
currentFolder?: string;
|
currentFolder?: string;
|
||||||
onNewNote?: () => void;
|
onNewNote?: () => void;
|
||||||
|
loading?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const NotesView: React.FC<NotesViewProps> = ({ onNoteSelect, currentFolder = 'Notes', onNewNote }) => {
|
export const NotesView: React.FC<NotesViewProps> = ({
|
||||||
|
notes,
|
||||||
|
onNoteSelect,
|
||||||
|
currentFolder = 'Notes',
|
||||||
|
onNewNote,
|
||||||
|
loading = false
|
||||||
|
}) => {
|
||||||
const [searchQuery, setSearchQuery] = useState('');
|
const [searchQuery, setSearchQuery] = useState('');
|
||||||
const [notes, setNotes] = useState<Note[]>([]);
|
|
||||||
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) => {
|
const formatDate = (dateString: string) => {
|
||||||
return format(new Date(dateString), 'EEEE d MMM yyyy', { locale: fr });
|
return format(new Date(dateString), 'EEEE d MMM yyyy', { locale: fr });
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user