update
This commit is contained in:
+50
-13
@@ -256,6 +256,7 @@ axiosClient.interceptors.response.use(
|
||||
|
||||
if ((status === 401 || status === 403) && !data) {
|
||||
return Promise.reject({
|
||||
status,
|
||||
success: false,
|
||||
|
||||
error: {
|
||||
@@ -265,15 +266,36 @@ axiosClient.interceptors.response.use(
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.reject(
|
||||
data || {
|
||||
// If server provided a body (data), forward it and attach HTTP status so
|
||||
// callers receive the actual error and the numeric status code.
|
||||
const serverBody = error.response?.data;
|
||||
|
||||
let payload: any;
|
||||
|
||||
if (serverBody && typeof serverBody === "object") {
|
||||
payload = { ...serverBody, status };
|
||||
} else if (serverBody) {
|
||||
payload = {
|
||||
status,
|
||||
success: false,
|
||||
error: {
|
||||
code: "SERVER_ERROR",
|
||||
message: "Có lỗi xảy ra",
|
||||
code: status ?? "SERVER_ERROR",
|
||||
message: String(serverBody),
|
||||
},
|
||||
},
|
||||
);
|
||||
};
|
||||
} else {
|
||||
payload = {
|
||||
status,
|
||||
success: false,
|
||||
error: {
|
||||
code: status ?? "SERVER_ERROR",
|
||||
message:
|
||||
error.response?.statusText || error.message || "Có lỗi xảy ra",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
return Promise.reject(payload);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -288,7 +310,7 @@ export const httpRequest = async <T>({
|
||||
setLoading,
|
||||
msgSuccess = "Thành công",
|
||||
showMessageSuccess = false,
|
||||
showMessageFailed = false,
|
||||
showMessageFailed = true,
|
||||
onError,
|
||||
}: HttpRequestOptions<T>): Promise<T> => {
|
||||
try {
|
||||
@@ -308,16 +330,20 @@ export const httpRequest = async <T>({
|
||||
},
|
||||
} as ApiResponse<T>);
|
||||
|
||||
// ================= SUCCESS =================
|
||||
/* ================= SUCCESS ================= */
|
||||
|
||||
if (safeRes.success) {
|
||||
if (showMessageSuccess) {
|
||||
toastSuccess({ msg: msgSuccess });
|
||||
toastSuccess({
|
||||
msg: msgSuccess,
|
||||
});
|
||||
}
|
||||
|
||||
return safeRes.data as T;
|
||||
}
|
||||
|
||||
// ================= FAIL =================
|
||||
/* ================= FAIL ================= */
|
||||
|
||||
const error = {
|
||||
message: safeRes.error?.message || "Có lỗi xảy ra",
|
||||
code: safeRes.error?.code,
|
||||
@@ -325,9 +351,20 @@ export const httpRequest = async <T>({
|
||||
|
||||
onError?.();
|
||||
|
||||
throw error; // 👈 QUAN TRỌNG
|
||||
} catch (error) {
|
||||
throw error; // 👈 QUAN TRỌNG: KHÔNG NUỐT
|
||||
throw error;
|
||||
} catch (error: any) {
|
||||
console.log("HTTP ERROR:", error);
|
||||
|
||||
const message = error?.error?.message || error?.message || "Có lỗi xảy ra";
|
||||
|
||||
/* SHOW TOAST */
|
||||
if (showMessageFailed) {
|
||||
toastWarn({
|
||||
msg: message,
|
||||
});
|
||||
}
|
||||
|
||||
throw error;
|
||||
} finally {
|
||||
setLoading?.(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user