import { NetManager } from "../libs/tw/manager/NetManager";
import { DataManager } from "../libs/tw/manager/DataManager";
import { NetName } from "../libs/tw/enum/NetName";
import PanelCtrl from "./ctrls/panelCtrl";
import { ModuleTypes } from "./types/sceneTypes";
import Loading from "./loading/Loading";
import SceneCtrl from "./ctrls/sceneCtrl";
import { NetBuried } from "./NetBuried";

export class NetPromise {
  private static instance: NetPromise;

  public static get ins(): NetPromise {
    if (!this.instance) {
      this.instance = new NetPromise();
    }
    return this.instance;
  }

  constructor() { }

  shareCode;
  inviteCode;

  Date = new Date();

  not_login = true;


  lightStar:any;


  /**
   * 星速台-民生樱花口红机-获取剩余次数
   */
  timesDo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.timesDo((success) => {
        console.log(success)
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
   * 星速台-民生樱花口红机-抽奖
   */
  joinDo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.joinDo((success) => {
        console.log(success)
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
     * 星速台-获取用户相关数据
     */
  public getProjectUserInfo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.getProjectUserInfo((success) => {
        console.log(success)
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
   * 星速台-民生樱花口红机-查询任务列表
   */
  listDo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.listDo((success) => {
        console.log(success)
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
   * 星速台-民生樱花口红机-查询红包明细
   */
  detailDo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.detailDo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
    * 星速台-民生樱花口红机-兑换优惠券
    */
  join3joinDo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.join3joinDo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
   * 星速台-民生樱花口红机-记录游戏参与次数
   */
  public join2recordDo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.join2recordDo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
  * 星速台-民生樱花口红机-记录分享状态
  */
  public join1recordDo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.join1recordDo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
    * 星速台-民生樱花口红机-领取任务奖励
    */
  public join1joinDo(type) {
    return new Promise((resolve, reject) => {
      NetManager.ins.join1joinDo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      }, type)
    })
  }

  /**
  * 提示toast
  * @param string 
  * @param time
  */
  showToast(string: string = "活动太火爆了，请稍后再试~", time = 1500) {
    let msgData = { msg: string, time: time, isHideMask: true }
    PanelCtrl.instance.show(ModuleTypes.TOAST_PANEL, msgData, false);
  }

  gotoIndex() {
    Loading.instace.show();
    NetPromise.ins.timesDo()
      .then((e) => {
        console.log(e)
        SceneCtrl.instance.change(ModuleTypes.START_SCENE);
        Loading.instace.hide();
      })
      .catch((e) => {
        console.error("失败")
        SceneCtrl.instance.change(ModuleTypes.START_SCENE);
        console.error(e)
        Loading.instace.hide();
      })
  }

  /**
   * 星速台-民生樱花口红机-记录领奖详情
   */
  exchangeDo(prizeIds) {
    return new Promise((resolve, reject) => {
      NetManager.ins.exchangeDo((success) => {
        console.log(success)
        if (!success) {
          reject(success)
        }
        resolve(success)
      }, prizeIds)
    })
  }

  /**
   * 星速台-查询奖品信息
   */
  prizeQuery(ids) {
    return new Promise((resolve, reject) => {
      NetManager.ins.prizeQuery((success) => {
        console.log(success)
        if (!success) {
          reject(success)
        }
        resolve(success)
      }, ids)
    })
  }


  /**
   * 获取url cookie参数
   * @param url 
   * @param variable 
   */
  getQueryVariable(url, variable) {
    var query = url;
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
      var pair = vars[i].split("=");
      if (pair[0] == variable) { return pair[1]; }
    }
    return (false);
  }

  //读取cookies
  getCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg)) {
      return unescape(arr[2]);
    } else {
      return null;
    }
  }


  /**
   * 获取url参数
   * @param name 
   */
  getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
  };


  //去分享
  doShare(onlyShare?) {
    if(!onlyShare){
      this.join1recordDo()
      .then(() => {
        setTimeout(() => {
          console.log("分享成功")
          NetBuried.ins.showLog(8)
          this.showToast("分享成功,游戏次数+1")
        }, 4000)
        setTimeout(() => {
          window.location.reload()
        }, 5000)
      })
      .catch((e) => {
        console.error(e)
      })
    }
    window["showSharePanel"]();
  }

  /**
   * 是否微信环境
   */

  isWeiXin() {
    var ua = navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i)) {
      return true
    } else {
      return false
    }
  }

  /**
  * 是否微信环境
  */

  isShanghai = false;


  //-------中信点亮家乡------
  /**
    * 地图点亮信息
    */
   public mapInfo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.mapInfo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
    * 点亮
    */
   public choseCity(adcode) {
    return new Promise((resolve, reject) => {
      NetManager.ins.choseCity((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      },adcode)
    })
  }
  /**
    * 点亮信息
    */
   public joinInfo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.joinInfo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  LoadClip(url) {
    return new Promise((resolev, reject) => {
        var parser = new window["SVGA"].Parser();
        parser.load(url, (videoItem) => {
           let pet = new window["SVGA"].EgretMovieClip(videoItem);
           console.log(pet)
            resolev(pet)
        }, (error) => {
            reject(error);
        })
    })
  }

  /**
    * 省市列表
    */
   public adList(adcode?) {
     if(adcode){
      return new Promise((resolve, reject) => {
        NetManager.ins.adList((success) => {
          if (!success) {
            reject(success)
          }
          resolve(success)
        },adcode)
      })
     }else{
      return new Promise((resolve, reject) => {
        NetManager.ins.adList((success) => {
          if (!success) {
            reject(success)
          }
          resolve(success)
        })
      })
     }
    
  }

  /**
    * 排行榜
    */
   public rankingInfo() {
    return new Promise((resolve, reject) => {
      NetManager.ins.rankingInfo((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }

  /**
    * 抽奖
    */
   public getPrize() {
    return new Promise((resolve, reject) => {
      NetManager.ins.getPrize((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }
  
  /**
    * 查询我的参与次数
    */
   public queryMyJoin() {
    return new Promise((resolve, reject) => {
      NetManager.ins.queryMyJoin((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }
  
  /**
    * 查询项目规则
    */
   public projectRule() {
    return new Promise((resolve, reject) => {
      NetManager.ins.projectRule((success) => {
        if (!success) {
          reject(success)
        }
        resolve(success)
      })
    })
  }
}