|
|
@@ -1,9 +1,10 @@ |
|
|
import { useCallback, useMemo, useState } from "react"; |
|
|
|
|
|
|
|
|
import { useCallback, useEffect, useMemo, useState } from "react"; |
|
|
import { APICommonResponse, apiRequest, ResultCode } from "api"; |
|
|
import { APICommonResponse, apiRequest, ResultCode } from "api"; |
|
|
import { UseFormReturn } from "react-hook-form"; |
|
|
import { UseFormReturn } from "react-hook-form"; |
|
|
import { Dictionary } from "@types"; |
|
|
import { Dictionary } from "@types"; |
|
|
import { useSnackbar } from "notistack"; |
|
|
import { useSnackbar } from "notistack"; |
|
|
import usePage from "./usePage"; |
|
|
import usePage from "./usePage"; |
|
|
|
|
|
import useBackDrop from "./useBackDrop"; |
|
|
|
|
|
|
|
|
export const APIErrorType = { |
|
|
export const APIErrorType = { |
|
|
NONE: "none", |
|
|
NONE: "none", |
|
|
@@ -23,6 +24,7 @@ export default function useAPICall< |
|
|
form, |
|
|
form, |
|
|
successMessage = false, |
|
|
successMessage = false, |
|
|
failedMessage = false, |
|
|
failedMessage = false, |
|
|
|
|
|
backDrop = false, |
|
|
}: { |
|
|
}: { |
|
|
apiMethod: (sendData: T) => Promise<U | null>; |
|
|
apiMethod: (sendData: T) => Promise<U | null>; |
|
|
onSuccess?: (res: U, sendData: T) => void; |
|
|
onSuccess?: (res: U, sendData: T) => void; |
|
|
@@ -30,6 +32,7 @@ export default function useAPICall< |
|
|
form?: UseFormReturn<any>; |
|
|
form?: UseFormReturn<any>; |
|
|
successMessage?: ((res: U) => string) | boolean; |
|
|
successMessage?: ((res: U) => string) | boolean; |
|
|
failedMessage?: ((res: APICommonResponse | null) => string) | boolean; |
|
|
failedMessage?: ((res: APICommonResponse | null) => string) | boolean; |
|
|
|
|
|
backDrop?: boolean; |
|
|
}) { |
|
|
}) { |
|
|
const [sending, setSending] = useState(false); |
|
|
const [sending, setSending] = useState(false); |
|
|
const [sendData, setSendData] = useState<T | null>(null); |
|
|
const [sendData, setSendData] = useState<T | null>(null); |
|
|
@@ -43,6 +46,8 @@ export default function useAPICall< |
|
|
|
|
|
|
|
|
const { enqueueSnackbar } = useSnackbar(); |
|
|
const { enqueueSnackbar } = useSnackbar(); |
|
|
|
|
|
|
|
|
|
|
|
const { setShowBackDrop } = useBackDrop(); |
|
|
|
|
|
|
|
|
const clearErrors = () => { |
|
|
const clearErrors = () => { |
|
|
setResult(null); |
|
|
setResult(null); |
|
|
setErrors({}); |
|
|
setErrors({}); |
|
|
@@ -164,6 +169,12 @@ export default function useAPICall< |
|
|
return data; |
|
|
return data; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
if (backDrop) { |
|
|
|
|
|
setShowBackDrop(sending); |
|
|
|
|
|
} |
|
|
|
|
|
}, [sending]); |
|
|
|
|
|
|
|
|
return { |
|
|
return { |
|
|
callAPI, |
|
|
callAPI, |
|
|
sending, |
|
|
sending, |
|
|
|