Skip to main content

useNotebooks

Overview​

useNotebooks is a custom React hook designed to fetch and manage the state of notebooks related to a specific project. It uses @tanstack/react-query for data fetching and caching, and it relies on the project session to determine the current project context.

Usage​

To use useNotebooks, ensure your component has access to the project session data via useProjectSession.

import React from 'react';
import { useNotebooks } from '@lunchbox/apps/hooks/notebook/useNotebooks';

const NotebooksList: React.FC = () => {
const { data: notebooks, isLoading, isError, error } = useNotebooks();

if (isLoading) {
return <div>Loading...</div>;
}

if (isError) {
return <div>Error: {error.message}</div>;
}

return (
<div>
<h1>Notebooks</h1>
<ul>
{notebooks.map(notebook => (
<li key={notebook._id}>
{notebook.title}
</li>
))}
</ul>
</div>
);
};

export default NotebooksList;

Parameters​

This hook does not take any parameters directly. It uses the following:

  • payload: An object containing:
    • projectId: The ID of the current project, retrieved from useProjectSession.

Returns​

The hook returns an object with the following properties, managed by useQuery from @tanstack/react-query:

  • data: An array of notebooks.
  • 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 relies on useProjectSession to retrieve the current project data.
  • The listNotebooks function should be properly implemented to fetch the notebook data based on the given project ID.
  • Ensure that the QUERY_KEYS constant is correctly defined to generate the appropriate query key for the notebooks list.