Skip to main content

useMoveDocumentToProject

Overview

useMoveDocumentToProject is a custom React hook designed to move a document to a different project. It uses @tanstack/react-query for managing the mutation and caching. The hook utilizes the authentication state and project session to determine the current project and user context.

Usage

To use useMoveDocumentToProject, ensure your component has access to authentication data via useAuth and project session data via useProjectSession.

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

const DocumentMover: React.FC<{ doc: NavbarDoc }> = ({ doc }) => {
const moveDocument = useMoveDocumentToProject();

const handleMove = () => {
moveDocument.mutate({ doc, projectId: 'newProjectId' });
};

return (
<button onClick={handleMove}>Move Document</button>
);
};

export default DocumentMover;

Parameters

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

  • payload: An object containing:
    • doc: The document to be moved.
    • projectId: The ID of the project to move the document to.

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 useAuth to retrieve the authenticated user data and useProjectSession to retrieve the current project data.
  • The DOCUMENT_MAPPER should map document types to their respective classes, which implement the moveToProject method.
  • Upon successful mutation, the hook invalidates the query for the document list to ensure the UI reflects the updated state.