添加聊天框消息解析功能;优化请求头处理;更新部分 api base url
This commit is contained in:
+19
-19
@@ -1,9 +1,11 @@
|
||||
import axios from "axios";
|
||||
import axios, { AxiosHeaders, type InternalAxiosRequestConfig } from "axios";
|
||||
import { config } from "@config/config";
|
||||
import { useProjectStore } from "@/store/projectStore";
|
||||
import { getAccessToken } from "@/lib/authToken";
|
||||
import { signOut } from "next-auth/react";
|
||||
import { useAuthStore } from "@/store/authStore";
|
||||
import {
|
||||
applyAuthContextHeaders,
|
||||
type AuthContextHeaderOptions,
|
||||
} from "@/lib/requestHeaders";
|
||||
|
||||
export const API_URL = process.env.NEXT_PUBLIC_API_URL || config.BACKEND_URL;
|
||||
|
||||
@@ -13,26 +15,24 @@ export const api = axios.create({
|
||||
|
||||
let isSigningOut = false;
|
||||
|
||||
const isMetaProjectsRequest = (request: {
|
||||
const resolveRequestUrl = (request: {
|
||||
baseURL?: string;
|
||||
url?: string;
|
||||
}) => {
|
||||
const url = `${request.baseURL ?? ""}${request.url ?? ""}`;
|
||||
return url.includes("/api/v1/meta/projects");
|
||||
};
|
||||
}) => `${request.baseURL ?? ""}${request.url ?? ""}`;
|
||||
|
||||
api.interceptors.request.use(async (request) => {
|
||||
const accessToken = await getAccessToken();
|
||||
if (accessToken) {
|
||||
request.headers = request.headers ?? {};
|
||||
request.headers.Authorization = `Bearer ${accessToken}`;
|
||||
}
|
||||
export interface ApiRequestConfig
|
||||
extends InternalAxiosRequestConfig,
|
||||
AuthContextHeaderOptions {}
|
||||
|
||||
const projectId = useProjectStore.getState().currentProjectId;
|
||||
if (projectId && !isMetaProjectsRequest(request)) {
|
||||
request.headers = request.headers ?? {};
|
||||
request.headers["X-Project-Id"] = projectId;
|
||||
}
|
||||
api.interceptors.request.use(async (request: ApiRequestConfig) => {
|
||||
const headers = new Headers(
|
||||
request.headers
|
||||
? AxiosHeaders.from(request.headers).toJSON() as Record<string, string>
|
||||
: undefined,
|
||||
);
|
||||
await applyAuthContextHeaders(resolveRequestUrl(request), headers, request);
|
||||
|
||||
request.headers = AxiosHeaders.from(Object.fromEntries(headers.entries()));
|
||||
|
||||
return request;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user