|
@@ -42,7 +42,7 @@ export interface DefaultApiResponse {
|
|
|
content?: string;
|
|
content?: string;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-export interface ApiFetchOptions<T, E = string> extends AxiosRequestConfig {
|
|
|
|
|
|
|
+export interface ApiFetchOptions<T, E = AxiosError<DefaultApiResponse>> extends AxiosRequestConfig {
|
|
|
silenceErrors?: boolean;
|
|
silenceErrors?: boolean;
|
|
|
ignoreSuccessErrors?: boolean;
|
|
ignoreSuccessErrors?: boolean;
|
|
|
transformResponse?: AxiosResponseTransformer;
|
|
transformResponse?: AxiosResponseTransformer;
|
|
@@ -54,9 +54,9 @@ export interface ApiFetchOptions<T, E = string> extends AxiosRequestConfig {
|
|
|
reject: (err: unknown) => void
|
|
reject: (err: unknown) => void
|
|
|
) => void;
|
|
) => void;
|
|
|
handleError?: (
|
|
handleError?: (
|
|
|
- errorResponse: AxiosError<E>,
|
|
|
|
|
|
|
+ errorResponse: AxiosError<DefaultApiResponse>,
|
|
|
resolve: (val: T) => void,
|
|
resolve: (val: T) => void,
|
|
|
- reject: (err: unknown) => void
|
|
|
|
|
|
|
+ reject: (err: E) => void
|
|
|
) => void;
|
|
) => void;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -105,7 +105,7 @@ export const successResponseIsError = (responseData?: DefaultApiResponse): boole
|
|
|
const UNKNOWN_ERROR_MESSAGE = 'Unknown error occurred';
|
|
const UNKNOWN_ERROR_MESSAGE = 'Unknown error occurred';
|
|
|
|
|
|
|
|
export const extractErrorMessage = (
|
|
export const extractErrorMessage = (
|
|
|
- errorResponse?: DefaultApiResponse | AxiosError | string
|
|
|
|
|
|
|
+ errorResponse?: DefaultApiResponse | AxiosError<DefaultApiResponse> | string
|
|
|
): string => {
|
|
): string => {
|
|
|
if (!errorResponse) {
|
|
if (!errorResponse) {
|
|
|
return UNKNOWN_ERROR_MESSAGE;
|
|
return UNKNOWN_ERROR_MESSAGE;
|
|
@@ -168,11 +168,11 @@ const handleErrorResponse = <T>(
|
|
|
notifyError(errorMessage, (err && err.response) || err, options);
|
|
notifyError(errorMessage, (err && err.response) || err, options);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-const handleResponse = <T>(
|
|
|
|
|
|
|
+const handleResponse = <T, E = unknown>(
|
|
|
response: AxiosResponse<T & DefaultApiResponse>,
|
|
response: AxiosResponse<T & DefaultApiResponse>,
|
|
|
resolve: (value?: T) => void,
|
|
resolve: (value?: T) => void,
|
|
|
reject: (reason?: unknown) => void,
|
|
reject: (reason?: unknown) => void,
|
|
|
- options?: ApiFetchOptions<T>
|
|
|
|
|
|
|
+ options?: ApiFetchOptions<T, E>
|
|
|
): void => {
|
|
): void => {
|
|
|
if (options && options.handleSuccess) {
|
|
if (options && options.handleSuccess) {
|
|
|
options.handleSuccess(response.data, resolve, reason => {
|
|
options.handleSuccess(response.data, resolve, reason => {
|
|
@@ -193,10 +193,10 @@ const getCancelToken = (): { cancelToken: CancelToken; cancel: () => void } => {
|
|
|
return { cancelToken: cancelTokenSource.token, cancel: cancelTokenSource.cancel };
|
|
return { cancelToken: cancelTokenSource.token, cancel: cancelTokenSource.cancel };
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-export const post = <T, U = unknown>(
|
|
|
|
|
|
|
+export const post = <T, U = unknown, E = AxiosError>(
|
|
|
url: string,
|
|
url: string,
|
|
|
data?: U,
|
|
data?: U,
|
|
|
- options?: ApiFetchOptions<T>
|
|
|
|
|
|
|
+ options?: ApiFetchOptions<T, E>
|
|
|
): CancellablePromise<T> =>
|
|
): CancellablePromise<T> =>
|
|
|
new CancellablePromise((resolve, reject, onCancel) => {
|
|
new CancellablePromise((resolve, reject, onCancel) => {
|
|
|
const { cancelToken, cancel } = getCancelToken();
|
|
const { cancelToken, cancel } = getCancelToken();
|
|
@@ -212,7 +212,7 @@ export const post = <T, U = unknown>(
|
|
|
.then(response => {
|
|
.then(response => {
|
|
|
handleResponse(response, resolve, reject, options);
|
|
handleResponse(response, resolve, reject, options);
|
|
|
})
|
|
})
|
|
|
- .catch((err: AxiosError) => {
|
|
|
|
|
|
|
+ .catch((err: AxiosError<DefaultApiResponse>) => {
|
|
|
if (options && options.handleError) {
|
|
if (options && options.handleError) {
|
|
|
options.handleError(err, resolve, reason => {
|
|
options.handleError(err, resolve, reason => {
|
|
|
handleErrorResponse(err, reject, options);
|
|
handleErrorResponse(err, reject, options);
|
|
@@ -233,10 +233,10 @@ export const post = <T, U = unknown>(
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-export const get = <T, U = unknown>(
|
|
|
|
|
|
|
+export const get = <T, U = unknown, E = AxiosError<DefaultApiResponse>>(
|
|
|
url: string,
|
|
url: string,
|
|
|
data?: U,
|
|
data?: U,
|
|
|
- options?: ApiFetchOptions<T>
|
|
|
|
|
|
|
+ options?: ApiFetchOptions<T, E>
|
|
|
): CancellablePromise<T> =>
|
|
): CancellablePromise<T> =>
|
|
|
new CancellablePromise((resolve, reject, onCancel) => {
|
|
new CancellablePromise((resolve, reject, onCancel) => {
|
|
|
const { cancelToken, cancel } = getCancelToken();
|
|
const { cancelToken, cancel } = getCancelToken();
|
|
@@ -250,7 +250,7 @@ export const get = <T, U = unknown>(
|
|
|
.then(response => {
|
|
.then(response => {
|
|
|
handleResponse(response, resolve, reject, options);
|
|
handleResponse(response, resolve, reject, options);
|
|
|
})
|
|
})
|
|
|
- .catch((err: AxiosError) => {
|
|
|
|
|
|
|
+ .catch((err: AxiosError<DefaultApiResponse>) => {
|
|
|
handleErrorResponse(err, reject, options);
|
|
handleErrorResponse(err, reject, options);
|
|
|
})
|
|
})
|
|
|
.finally(() => {
|
|
.finally(() => {
|