Source

apis/ShareTransfer.js

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,
  });