All files / src/components/Disputes/RespondToDispute/hooks useDisputeActions.tsx

100% Statements 19/19
50% Branches 1/2
100% Functions 7/7
100% Lines 19/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83                    2x         82x   82x 1x             82x 5x 5x             82x 2x             82x 1x           82x 3x             82x 2x 2x       1x   1x             82x                    
import { showMessage } from "@common/Toast";
import { customInstance } from "@services/api";
import { useMutation, useQueryClient } from "react-query";
 
type Props = {
  disputeId: string;
  lastCaseId: string;
  isDraft?: boolean;
};
 
export const useDisputeActions = ({
  disputeId,
  isDraft,
  lastCaseId,
}: Props) => {
  const queryClient = useQueryClient();
 
  const removeDraftFilesMutation = useMutation((data: any) => {
    return customInstance({
      url: `/disputes/${disputeId}/cases/${lastCaseId}/evidence`,
      method: "DELETE",
      data,
    });
  });
 
  const respondToDisputeMutation = useMutation((data: any) => {
    const url = `/disputes/${disputeId}/cases/${lastCaseId}`;
    return customInstance({
      url,
      method: "PATCH",
      data,
    });
  });
 
  const submitEvidenceMutation = useMutation(({ data, caseId }: any) => {
    return customInstance({
      url: `/disputes/${disputeId}/cases/${caseId}/submit`,
      method: "POST",
      data,
    });
  });
 
  const postImages = useMutation(({ data }: any) => {
    return customInstance({
      url: `/disputes/${disputeId}/evidence`,
      method: "POST",
      data,
    });
  });
  const patchImages = useMutation(({ data, caseId }: any) => {
    return customInstance({
      url: `/disputes/${disputeId}/cases/${caseId}/evidence`,
      method: "PATCH",
      data,
    });
  });
 
  const handlePanelActions = async (action: string) => {
    try {
      await respondToDisputeMutation.mutateAsync({
        action,
      });
 
      queryClient.invalidateQueries(["dispute-preview", disputeId]);
    } catch (err: any) {
      showMessage(
        "Error",
        err?.response?.data?.input?.[0].message || err?.response?.data?.message,
      );
    }
  };
 
  return {
    removeDraftFilesMutation,
    respondToDisputeMutation,
    submitEvidenceMutation,
    postImages,
    patchImages,
    handlePanelActions,
  };
};
//