useDocuments
Overview
useDocuments is a custom React hook that fetches and manages the state of various document types (notebooks, PDFs, boards, and coaching documents) related to a specific project and user. It uses @tanstack/react-query for data fetching and caching, and it relies on the authentication state and project session.
Usage
To use useDocuments, ensure your component has access to authentication data via useAuth and project session data via useProjectSession.
import React from 'react';
import useDocuments from '@lunchbox/apps/hooks/useDocuments';
const DocumentsList: React.FC = () => {
const { data: documents, isLoading, isError, error } = useDocuments();
if (isLoading) {
return <div>Loading...</div>;
}
if (isError) {
return <div>Error: {error.message}</div>;
}
return (
<div>
<h1>Documents</h1>
<ul>
{documents.map(doc => (
<li key={doc._id}>
{doc.title} ({doc.type})
</li>
))}
</ul>
</div>
);
};
export default DocumentsList;
Parameters
This hook does not take any parameters directly. It uses the following:
auth.user._id: Retrieved from the authentication context usinguseAuth.project._id: Retrieved from the project session usinguseProjectSession.
Returns
The hook returns an object with the following properties, managed by useQuery from @tanstack/react-query:
data: An array of documents (notebooks, PDFs, boards, and coaching documents).isLoading: A boolean indicating if the data is currently being loaded.isError: A boolean indicating if there was an error fetching the data.error: The error object if an error occurred during data fetching.
Notes
- The hook fetches data from multiple endpoints (
listNotebooks,listPDFDocuments,listBoards,listCoachingDocs) and combines the results into a single array. - Ensure that the
QUERY_KEYSconstant is correctly defined to generate the appropriate query key for the documents. - The hook relies on
useAuthto retrieve the authenticated user data anduseProjectSessionto retrieve the current project data.