import axios from "axios";
import Store from "electron-store"; // 主进程用 electron-store 存取用户信息，和渲染进程的 $dataStore 数据互通

const dataStore = new Store();

// 纯请求实例：无任何 UI 依赖，仅处理 token 注入和错误格式化
const service = axios.create({
  baseURL: "http://localhost:3000",
  timeout: 12600000
});

// 请求拦截：仅注入 token
service.interceptors.request.use(
  config => {
    const user = dataStore.get("user");
    if (user.token) {
      config.headers["jwt-token"] = user.token;
    }
    return config;
  },
  error => Promise.reject(error)
);

// 响应拦截：仅处理数据和错误信息，不做任何 UI 操作
service.interceptors.response.use(
  response => response.data,
  error => {
    let errMsg = "请求失败，请稍后重试";
    if (error.response.data) {
      const data = error.response.data;
      errMsg =
        data.msg || data.message || `请求错误（${error.response.status}）`;
    } else if (error.message) {
      errMsg = error.message.includes("timeout")
        ? "请求超时，请检查网络"
        : error.message;
    }
    return Promise.reject(new Error(errMsg));
  }
);

export default service;
