添加聊天框消息解析功能;优化请求头处理;更新部分 api base url
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import { getAccessToken } from "@/lib/authToken";
|
||||
import { useProjectStore } from "@/store/projectStore";
|
||||
|
||||
export type AuthHeaderMode = "include" | "omit";
|
||||
export type ProjectHeaderMode = "auto" | "include" | "omit";
|
||||
|
||||
export interface AuthContextHeaderOptions {
|
||||
authHeaderMode?: AuthHeaderMode;
|
||||
projectHeaderMode?: ProjectHeaderMode;
|
||||
}
|
||||
|
||||
const shouldIncludeProjectHeader = (
|
||||
url: string,
|
||||
projectHeaderMode: ProjectHeaderMode,
|
||||
) => {
|
||||
if (projectHeaderMode === "include") {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (projectHeaderMode === "omit") {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !url.includes("/api/v1/meta/projects");
|
||||
};
|
||||
|
||||
export const applyAuthContextHeaders = async (
|
||||
url: string,
|
||||
headers: Headers,
|
||||
options: AuthContextHeaderOptions = {},
|
||||
) => {
|
||||
const accessToken = await getAccessToken();
|
||||
if (accessToken && options.authHeaderMode !== "omit") {
|
||||
headers.set("Authorization", `Bearer ${accessToken}`);
|
||||
}
|
||||
|
||||
const projectId = useProjectStore.getState().currentProjectId;
|
||||
if (
|
||||
projectId &&
|
||||
shouldIncludeProjectHeader(url, options.projectHeaderMode ?? "auto")
|
||||
) {
|
||||
headers.set("X-Project-Id", projectId);
|
||||
}
|
||||
|
||||
return headers;
|
||||
};
|
||||
Reference in New Issue
Block a user