refactor: simplify request exception handling (#4129)

#### What type of PR is this?

/kind improvement
/area console
/milestone 2.7.x

#### What this PR does / why we need it:

简化请求异常提示的逻辑。

#### Does this PR introduce a user-facing change?

```release-note
None
```
pull/4126/head^2
Ryan Wang 2023-06-28 14:44:12 +08:00 committed by GitHub
parent d0526ec592
commit 02e7068ee0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 33 deletions

View File

@ -95,7 +95,7 @@ const handleLogin = async () => {
const { title: errorTitle, detail: errorDetail } = e.response?.data || {}; const { title: errorTitle, detail: errorDetail } = e.response?.data || {};
if (errorTitle || errorDetail) { if (errorTitle || errorDetail) {
Toast.error([errorTitle, errorDetail].filter(Boolean).join(" - ")); Toast.error(errorDetail || errorTitle);
} else { } else {
Toast.error(t("core.common.toast.unknown_error")); Toast.error(t("core.common.toast.unknown_error"));
} }

View File

@ -1168,13 +1168,10 @@ core:
save_failed_and_retry: "Failed to save, please retry" save_failed_and_retry: "Failed to save, please retry"
publish_failed_and_retry: "Failed to publish, please retry" publish_failed_and_retry: "Failed to publish, please retry"
network_error: "Network error, please check your connection" network_error: "Network error, please check your connection"
request_parameter_error: "Request parameter error: {title}"
login_expired: "Login expired, please log in again" login_expired: "Login expired, please log in again"
forbidden: Access denied forbidden: Access denied
not_found: Resource not found not_found: Resource not found
server_internal_error_with_title: "Internal server error: {title}"
server_internal_error: Internal server error server_internal_error: Internal server error
unknown_error_with_title: "Unknown error: {title}"
unknown_error: Unknown error unknown_error: Unknown error
dialog: dialog:
titles: titles:

View File

@ -1168,13 +1168,10 @@ core:
save_failed_and_retry: 保存失败,请重试 save_failed_and_retry: 保存失败,请重试
publish_failed_and_retry: 发布失败,请重试 publish_failed_and_retry: 发布失败,请重试
network_error: 网络错误,请检查网络连接 network_error: 网络错误,请检查网络连接
request_parameter_error: 请求参数错误:{title}
login_expired: 登录已过期,请重新登录 login_expired: 登录已过期,请重新登录
forbidden: 无权限访问 forbidden: 无权限访问
not_found: 资源不存在 not_found: 资源不存在
server_internal_error_with_title: 服务器内部错误:{title}
server_internal_error: 服务器内部错误 server_internal_error: 服务器内部错误
unknown_error_with_title: 未知错误:{title}
unknown_error: 未知错误 unknown_error: 未知错误
dialog: dialog:
titles: titles:

View File

@ -1168,13 +1168,10 @@ core:
save_failed_and_retry: 保存失敗,請重試 save_failed_and_retry: 保存失敗,請重試
publish_failed_and_retry: 發布失敗,請重試 publish_failed_and_retry: 發布失敗,請重試
network_error: 網絡錯誤,請檢查網絡連接 network_error: 網絡錯誤,請檢查網絡連接
request_parameter_error: 請求參數錯誤:{title}
login_expired: 登入已過期,請重新登入 login_expired: 登入已過期,請重新登入
forbidden: 無權限訪問 forbidden: 無權限訪問
not_found: 資源不存在 not_found: 資源不存在
server_internal_error_with_title: 伺服器內部錯誤:{title}
server_internal_error: 伺服器內部錯誤 server_internal_error: 伺服器內部錯誤
unknown_error_with_title: 未知錯誤:{title}
unknown_error: 未知錯誤 unknown_error: 未知錯誤
dialog: dialog:
titles: titles:

View File

@ -78,40 +78,30 @@ axiosInstance.interceptors.response.use(
return Promise.reject(error); return Promise.reject(error);
} }
const { status } = errorResponse;
const { title } = errorResponse.data;
// Don't show error toast // Don't show error toast
// see https://github.com/halo-dev/halo/issues/2836 // see https://github.com/halo-dev/halo/issues/2836
if (errorResponse.config.mute) { if (errorResponse.config.mute) {
return Promise.reject(error); return Promise.reject(error);
} }
if (status === 400) { const { status } = errorResponse;
Toast.error( const { title, detail } = errorResponse.data;
i18n.global.t("core.common.toast.request_parameter_error", { title })
); if (status === 401) {
} else if (status === 401) {
const userStore = useUserStore(); const userStore = useUserStore();
userStore.loginModalVisible = true; userStore.loginModalVisible = true;
Toast.warning(i18n.global.t("core.common.toast.login_expired")); Toast.warning(i18n.global.t("core.common.toast.login_expired"));
} else if (status === 403) {
Toast.error(i18n.global.t("core.common.toast.forbidden")); return Promise.reject(error);
} else if (status === 404) {
Toast.error(i18n.global.t("core.common.toast.not_found"));
} else if (status === 500) {
Toast.error(
i18n.global.t("core.common.toast.server_internal_error_with_title")
);
} else {
Toast.error(
i18n.global.t("core.common.toast.unknown_error_with_title", {
title,
})
);
} }
if (title || detail) {
Toast.error(detail || title);
return Promise.reject(error);
}
Toast.error(i18n.global.t("core.common.toast.unknown_error"));
return Promise.reject(error); return Promise.reject(error);
} }
); );