import JSZip from "jszip";
import ListModule from "..";
import ItemObject from "../objects/item";
import { saveAs } from "file-saver";

export default (listModule: ListModule) => {
  return {
    async addArtifacts(data: ItemObject) {
      listModule.ctx.ui.showLoading("");
      const res = await listModule.http.createArtifact(data);
      listModule.ctx.ui.hideLoading();
      if (!res.result) {
        listModule.ctx.ui.messageError(
          res.errorDesc ? res.errorDesc : "添加失败"
        );
        return false;
      }
      listModule.ctx.ui.messageSuccess("添加成功");
      listModule.backendList.fresh();
    },
    async updateArtifacts(data: ItemObject) {
      listModule.ctx.ui.showLoading("");
      const res = await listModule.http.updateArtifact(data);
      listModule.ctx.ui.hideLoading();
      if (!res.result) {
        listModule.ctx.ui.messageError(
          res.errorDesc ? res.errorDesc : "添加失败"
        );
        return false;
      }
      listModule.ctx.ui.messageSuccess("修改成功");
      listModule.backendList.fresh();
    },
    async deleteArtifact(item: any) {
      const ok = await listModule.ctx.ui.showDialogConfirm({
        type: "danger",
        content: `确认删除${item?.name || ""}？`,
      });

      if (ok) {
        const res = await listModule.http.deleteArtifact(item._id);
        if (!res.result) return;
        await listModule.backendList.fresh();
        if (
          listModule.backendList.state.list.length == 0 &&
          listModule.backendList.state.page > 1
        ) {
          listModule.backendList.state.page -= 1;
          listModule.backendList.fresh();
        }
      }
    },
    async getArtifactDtl(id: string) {
      const res = await listModule.http.getArtifactDtl(id);
      if (res.errorNo != 200) {
        listModule.ctx.ui.messageError(res.errorDesc);
        return false;
      }
      return res.result;
    },

    async exportArtifacts() {
      listModule.ctx.ui.showLoading("导出中");
      const res = await listModule.http.exportArtifact({ ids: [] });
      if (res.errorNo == 200) {
        listModule.ctx.ui.messageSuccess("导出成功！请重启前端软件!");
      }
      listModule.ctx.ui.hideLoading();
    },

    async importArtifacts() {
      let ok = await listModule.ctx.ui.showDialogConfirm({
        title: "导入配置",
        content: "导入配置后当前的数据会丢失,确认是否导入覆盖?",
      });
      if (!ok) return;
      listModule.ctx.ui.showLoading("导入中");
      const res = await listModule.http.importArtifact();
      if (res.errorNo == 200) {
        listModule.ctx.ui.messageSuccess(res.result);
        await listModule.backendList.fresh();
      }
      listModule.ctx.ui.hideLoading();
    },
  };
};
