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_KEYS
constant is correctly defined to generate the appropriate query key for the documents. - The hook relies on
useAuth
to retrieve the authenticated user data anduseProjectSession
to retrieve the current project data.