This commit is contained in:
TuanVT
2026-05-31 09:38:10 +07:00
parent 56e2733d8f
commit 62ca6dd0f9
32 changed files with 1785 additions and 381 deletions
+50 -13
View File
@@ -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);
}