import { request } from "@cqsjjb/jjb-common-lib/http.js";
import { useEffect, useState } from "react";
import { DICTIONARY_APP_KEY_ENUM } from "../../../enum/dictionary";
import { executeWithCache } from "../../../utils";
import BasicSelect from "../Basic";

/**
 * 数据字典下拉组件
 */
function DictionarySelect(props) {
  const {
    appKey = DICTIONARY_APP_KEY_ENUM.DEFAULT,
    dictValue = "",
    nameKey = "dictLabel",
    idKey = "dictValue",
    ...restProps
  } = props;

  const [data, setData] = useState([]);

  const getData = async () => {
    if (!Object.values(DICTIONARY_APP_KEY_ENUM).includes(appKey)) {
      console.error(`【DictionarySelect】 传入的 appKey 不在 DICTIONARY_APP_KEY_ENUM 中，当前传入的 appKey 是 ${appKey}`);
      return;
    }

    if (!dictValue) {
      console.error(`【DictionarySelect】 缺少 dictValue 参数`);
      return;
    }

    const cacheKey = { appKey, dictValue };

    await executeWithCache(cacheKey, async () => {
      const { data } = await request("/config/dict-trees/list/by/dictValues", "get", { appKey, dictValue });
      return data;
    }, setData);
  };

  useEffect(() => {
    getData();
  }, [dictValue]);

  return (
    <BasicSelect data={data} nameKey={nameKey} idKey={idKey} {...restProps} />
  );
}

DictionarySelect.displayName = "DictionarySelect";

export default DictionarySelect;
