Skip to main content

useUpdateDocument

Overview

useUpdateDocument is a custom React hook designed to update a document's details. It uses @tanstack/react-query for managing the mutation and caching. The hook ensures consistency across the application state by leveraging the authentication state, project session, and document data.

Usage

To use useUpdateDocument, ensure your component has access to the necessary hooks (useAuth, useDocuments, useProjectSession).

import React from 'react';
import { useMutation } from '@tanstack/react-query';
import useUpdateDocument from '@lunchbox/apps/hooks/useUpdateDocument'
import { NavbarDoc } from '@lunchbox/apps/types/docs';

const DocumentUpdater: React.FC<{ doc: NavbarDoc }> = ({ doc }) => {
const updateDocument = useUpdateDocument();

const handleUpdate = () => {
updateDocument.mutate(doc);
};

return (
<button onClick={handleUpdate}>Update Document</button>
);
};

export default DocumentUpdater;

Parameters

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

  • payload: A NavbarDoc object representing the document to be updated.

Returns

The hook returns a mutation object with the following properties, managed by useMutation from @tanstack/react-query:

  • mutate: A function to trigger the mutation.
  • isLoading: A boolean indicating if the mutation is currently being executed.
  • isError: A boolean indicating if there was an error during the mutation.
  • error: The error object if an error occurred during the mutation.
  • isSuccess: A boolean indicating if the mutation was successful.

Notes

  • The hook relies on the authentication state to retrieve the authenticated user data and project session to retrieve the current project data.
  • The DOCUMENT_MAPPER should map document types to their respective classes, which implement the update method.
  • Upon successful mutation, the hook updates the local cache using produce from immer and invalidates the queries to ensure the UI reflects the updated state.