import { defineStore } from "pinia";
import { getSTSInfo } from "@/api/path/system.api";

export const useSystemStore = defineStore("useSystemStore", {
  state: () => ({
    local_loading: false,
    routeSate: "", 
    token: "",
    ISCREATE: false,
    stsClientInfo: {},
    Administrator: {},
    DAPP_CACHE_KEY:[],
    AddressList:[],
    DeviceId:'',
    USERID:"",
    ImsessionList:[],
    needRefreshIm:false,
    userUuid: '',
    messageList: {},//消息缓存
    // FirendList:[]
  }),
  persist: true,
  getters: {
    getLocalLoading() {
      return this.local_loading;
    },
    getToken() {
      if (this.token) return this.token;
      this.token = window.localStorage?.token || "";
      return this.token;
    },

    // getSTSClient() {
    //   const stsFn = async () => {
    //     const windowVar = window;
    //     let longTime = 0;
    //     if (
    //       windowVar.stsOSSClient &&
    //       windowVar.stsOSSClient.stsTokenFreshTime
    //     ) {
    //       const oldTime = windowVar.stsOSSClient.stsTokenFreshTime.getTime();
    //       const newTime = new Date().getTime();
    //       longTime = newTime - oldTime;
    //     }

    //     // STS信息
    //     if (!windowVar.stsOSSClient || longTime > 10 * 60 * 1000) {
    //       const res = await getSTSInfo({});

    //       const info = res.data;
    //       const systemStore = useSystemStore();
    //       const getInfoData = (info) => {
    //         const infoData = {
    //           endpoint: "https://flexi.oss-cn-hongkong.aliyuncs.com",
    //           region: "oss-cn-hongkong",
    //           accessKeyId: info.AccessKeyId,
    //           accessKeySecret: info.AccessKeySecret,
    //           stsToken: info.SecurityToken,
    //           bucket: "flexi",
    //           cname: true,
    //         };
    //         this.stsClientInfo = infoData;
    //         systemStore.setStateValue("stsClientInfo", infoData);
    //         return infoData;
    //       };
    //       getInfoData(info);

    //       const client = new windowVar.OSS({
    //         ...this.stsClientInfo,
    //         refreshSTSToken: async () => {
    //           const res = await getSTSInfo({});
    //           getInfoData(res.data);
    //           return {
    //             accessKeyId: info.AccessKeyId,
    //             accessKeySecret: info.AccessKeySecret,
    //             stsToken: info.SecurityToken,
    //           };
    //         },
    //         refreshSTSTokenInterval: 30 * 60 * 1000,
    //       });

    //       client.putObject = async (data) => {
    //         const putRes = await client.put(data.key, data.body);
    //         putRes.statusCode = 200;
    //         return putRes;
    //       };
    //       windowVar.stsOSSClient = client;

    //       return client;
    //     }
    //     return windowVar.stsOSSClient;
    //   };
    //   return stsFn;
    // },
  },
  actions: {
    localLoading(value = false) {
      this.local_loading = value;
    },
    // 储存
    // setStateValue(res) {
    //   this[res.key] = res.value;
    //   const value =
    //     typeof res.value === "string" ? res.value : JSON.stringify(res.value);
    //   if (res.localStorage) {
    //     // 此方法只处理了简单数据类型 如字符串(token)、布尔之类的
    //     window.localStorage.setItem(res.key, value);
    //   }
    // },
  },
});
