import { getCurrentServer } from "@/stores/app"; import authStore, { logout } from "@/stores/auth"; import { ofetch } from "ofetch"; const api = ofetch.create({ onRequest: (config) => { const server = getCurrentServer(); if (!server) { throw new Error("No server selected"); } // set server url config.options.baseURL = server; const { token, teamId } = authStore.getState(); if (token) { config.options.headers.set("Authorization", `Bearer ${token}`); } if (teamId) { config.options.headers.set("X-Team-Id", teamId); } }, onResponseError: (error) => { if (error.response.status === 401 && !!authStore.getState().token) { logout(); throw new Error("Unauthorized"); } const data = error.response._data; if (data) { const message = typeof data === "string" ? data : data?.message; throw new Error(message || "Something went wrong"); } }, }); export default api;