refactor(layout, i18n, admin): 优化布局结构与多语言支持
调整 AdminShell 组件的子组件顺序,提升代码可读性。更新 admin-breadcrumb 组件,简化导航标签翻译逻辑,确保多语言支持的一致性。重构 admin-language-switcher 组件,优化语言切换的用户体验,增强界面交互性。更新多语言配置,新增登录界面的副标题,提升用户体验。
This commit is contained in:
@@ -5,6 +5,10 @@ import axios, {
|
||||
} from "axios";
|
||||
|
||||
import { withAdminAuthHeader } from "@/lib/admin-auth";
|
||||
import {
|
||||
handleAdminAuthRejected,
|
||||
isAdminAuthRejected,
|
||||
} from "@/lib/admin-auth-reject";
|
||||
import { withAdminLocaleHeaders } from "@/lib/admin-locale";
|
||||
import { LotteryApiBizError, LotteryApiEnvelopeError } from "@/types/api/errors";
|
||||
import { isApiEnvelope } from "@/types/api/envelope";
|
||||
@@ -18,6 +22,23 @@ export const adminHttp = axios.create({
|
||||
headers: { Accept: "application/json" },
|
||||
});
|
||||
|
||||
adminHttp.interceptors.response.use(
|
||||
(response) => response,
|
||||
(error: unknown) => {
|
||||
if (isAdminAuthRejected(error)) {
|
||||
handleAdminAuthRejected();
|
||||
}
|
||||
return Promise.reject(error);
|
||||
},
|
||||
);
|
||||
|
||||
function rejectAfterAuthCheck(err: unknown): never {
|
||||
if (isAdminAuthRejected(err)) {
|
||||
handleAdminAuthRejected();
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
|
||||
export function unwrapData<T>(payload: unknown): T {
|
||||
if (!isApiEnvelope(payload)) {
|
||||
throw new LotteryApiEnvelopeError();
|
||||
@@ -48,7 +69,7 @@ export async function publicAdminRequest<T>(
|
||||
throw new LotteryApiBizError(body.msg, body.code, body.data);
|
||||
}
|
||||
}
|
||||
throw err;
|
||||
rejectAfterAuthCheck(err);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +85,7 @@ export async function request<T>(config: AxiosRequestConfig): Promise<T> {
|
||||
throw new LotteryApiBizError(body.msg, body.code, body.data);
|
||||
}
|
||||
}
|
||||
throw err;
|
||||
rejectAfterAuthCheck(err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user