import { useMutation, useQuery } from "@tanstack/react-query";
import { toast } from "react-toastify";
import Axios from "../utils/ApiConfiguration";
/**
* Custom hook to fetch a list of share transfer requests.
*
* This hook sends a request to retrieve a list of share transfer requests from the server.
*
* @returns {Object} The query result object.
*
* @example
* // Usage of useGetShareTransferRequest hook
* const { data, isLoading, error } = useGetShareTransferRequest();
*/
export const useGetShareTransferRequest = () =>
useQuery({
queryKey: ["share-transfer-request-list"],
queryFn: () => Axios.get("sharetransferrequest/"),
refetchOnWindowFocus: true,
});
/**
* Custom hook to submit a share transfer request.
*
* This hook sends a POST request to create a share transfer request on the server.
*
* @param {Object} data - The share transfer request data to be submitted.
*
* @returns {Object} The mutation result object.
*
* @example
* // Usage of useShareTransferRequest hook
* const { mutate, isLoading, isError, error } = useShareTransferRequest();
* const requestData = { ......} ;
* mutate(requestData);
*/
export const useShareTransferRequest = () =>
useMutation((data) => Axios.post("sharetransferrequest/", data), {
onSuccess: (res) => {
toast.success("Your share transfer request has been sent");
},
onError: (err) => {
let errors = Object.values(err?.response?.data?.errors || {});
toast.error(errors[0][0]);
},
});
/**
* Custom hook to fetch a single share transfer request by ID.
*
* This hook sends a request to retrieve a single share transfer request from the server based on its ID.
*
* @param {string} id - The ID of the share transfer request to fetch.
*
* @returns {Object} The query result object.
*
* @example
* // Usage of useGetSingleShareTransferRequest hook
* const { data, isLoading, error } = useGetSingleShareTransferRequest("your_request_id");
*/
export const useGetSingleShareTransferRequest = (id) =>
useQuery({
queryKey: ["share-history-for-transfer", id],
queryFn: () => Axios.get(`sharehistory/${id}/`),
refetchOnWindowFocus: true,
});
Source