import { request } from "@cqsjjb/jjb-common-lib/http.js";
import { useState } from "react";

/**
 * 导入文件
 */
export default function useImportFile(returnType = "object") {
  // loading状态
  const [loading, setLoading] = useState(false);
  // 用于跟踪进行中的请求数量（不暴露给外部）
  let requestCount = 0;

  // 导入文件
  const importFile = (url, options) => {
    // 增加请求数量并设置loading状态
    requestCount++;
    if (requestCount > 0) {
      setLoading(true);
    }

    if (!url) {
      console.error("【importFile】 缺少 url 参数");
      return;
    }

    return new Promise((resolve, reject) => {
      const { files = [], params = {} } = options;
      const formData = new FormData();

      // 将文件添加到formData中
      files.forEach((f) => {
        f.originFileObj && formData.append("file", f.originFileObj);
      });

      // 将额外携带的参数添加到formData中
      Object.keys(params).forEach((key) => {
        formData.append(key, params[key]);
      });

      // 发送请求
      request(url, "post", formData, { "Content-Type": "multipart/form-data" })
        .then((res) => {
          resolve(res);
        })
        .catch((err) => {
          reject(err);
        })
        .finally(() => {
          // 减少请求数量并在没有进行中的请求时设置loading为false
          requestCount--;
          if (requestCount <= 0) {
            setLoading(false);
          }
        });
    });
  };

  if (returnType === "array")
    return [loading, importFile];
  return { loading, importFile };
}
