32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import { useState, useEffect, useCallback } from 'react';
|
|
import { pb } from '@/services/pocketbase';
|
|
import type { Document } from '@/types/Document';
|
|
|
|
export const useDocuments = () => {
|
|
const [documents, setDocuments] = useState<Document[]>([]);
|
|
const [isLoading, setIsLoading] = useState(true);
|
|
const [error, setError] = useState<string | null>(null);
|
|
|
|
const fetchDocuments = useCallback(async () => {
|
|
setIsLoading(true);
|
|
setError(null);
|
|
try {
|
|
const records = await pb.collection('aegis_documents_vault').getFullList<Document>({
|
|
sort: '-created', // Du plus récent au plus ancien
|
|
});
|
|
setDocuments(records);
|
|
} catch (err) {
|
|
console.error("Erreur lors de la récupération des documents :", err);
|
|
setError("Impossible de charger les documents.");
|
|
} finally {
|
|
setIsLoading(false);
|
|
}
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
// eslint-disable-next-line react-hooks/set-state-in-effect
|
|
fetchDocuments();
|
|
}, [fetchDocuments]);
|
|
|
|
return { documents, isLoading, error, refetch: fetchDocuments };
|
|
}; |