// 微信分享
// 使用方法
// 步骤1，引入：
// import * as YdShare from '@/common/share.js'
// 步骤2，初始化：
// let shareObj = {
//     shareTitle: this.city + '竟然有那么多好玩的活动',
//     shareContent: "快来参加吧！",
//     shareIcon:"https://ssl-pubpic.51yund.com/857264683.jpg",
//     shareUrl: 'https://sslwxsharecircle.51yund.com/vapps/cityActivity/'
// }
// YdShare.setSimpleShare(shareObj);
// 步骤3，调用
// YdShare.onShare()
// 如果是右上角分享，则不需要步骤3

import CryptoJS from "crypto-js";
import wx from "weixin-js-sdk"; //引入WxjsSDK
async function commonShare(shareObj: any, cbFun: () => void) {
  //sharePlatforom -2:右上角分享配置不调起分享面板 -1:分享面板 0:新浪微博 1:微信聊天 2:微信朋友圈 4:QQ聊天 5:QQ空间
  //shareType 0:分享链接(icon title content url) 1:分享图片(QQ空间不支持 即使是分享图片的时候 也需要设置一套分享链接的素材)
  //screenShotsFlag  true 分享截屏
  shareCb = cbFun;
  var sharePlatforom = shareObj["sharePlatforom"];
  var shareType = shareObj["shareType"];
  if (sharePlatforom == -2 && shareType != 1) {
    updateShareMetaInfo(shareObj); //更新meta信息
    await addWeixinShareSpecifyInfoV2(shareObj); //增加二次分享
    return;
  }
  if (!window.tool.isYuedong()) return;
  if (window.tool.isAndroidWeb()) {
    if (sharePlatforom >= 0) {
      /*单渠道分享 （分享链接 or 图片）
              android 分享图片.meta带上share_pic_url
              QQ 空间不支持 正常分享页面meta配置的title、content、url、icon等
            */
      sharePlatforom = initAppShareType(sharePlatforom);
      shareObj["sharePlatforom"] = sharePlatforom;
      androidShareByType(shareObj);
    } else {
      //分享面板分享链接（图片 ）
      updateShareMetaInfo(shareObj); //更新meta信息 给客户端取
      await addWeixinShareSpecifyInfoV2(shareObj); //增加二次分享
      ydShare(null, null);
    }
    return;
  }

  if (sharePlatforom >= -1) {
    // ios 分享面板 or 单渠道分享 （图片 + 链接）
    var screenShotsFlag = shareObj["screenShotsFlag"];
    var shareTitle = shareObj["shareTitle"];
    var shareContent = shareObj["shareContent"];
    var shareIcon = shareObj["shareIcon"];
    var openShareUrl = shareObj["shareUrl"];
    var imgBase64Url = shareObj["sharePicUrl"];
    shareObj = initShareObj(shareObj);
    if (sharePlatforom < 0) {
      sharePlatforom = "";
    }
    //imgBase64Url与sharePicUrl都是base64格式且同时存在，分享图片就是根据sharePicUrl来生成
    //imgBase64Url1 为了兼容客户端无法分享bug加的
    var imgBase64Url1 =
      "iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAIAAADZ8fBYAAADlElEQVR4AX2VA6xEVxCGv3/OuYvajdPGSRvUCGvFKsPGZuPGbsyaQW3btm27T6s70+Ttnpzcfcrd3Tl435n7z73z6+ifjnfkmGOx+V3jemmnpRIvE7LCTUY44GCCAOEgsAAAc8JwAHBhQYlRYBgKwh0MENmYDwwKmvoXNcRRWepuq0NjQdvklhQMddA1Vsk63FSWVLYJgrJTm3HhEoRgK1p41LvuoKOjW02OAM/CjSKoMLaia1y0LmgKGrrSKxse1DMDwNqYtbBU63p1ZyBl9TporNStng/hh9the9u+jiCBxeY3JGSQyqSBJeU/fPWt2VeFsJC01A2spDyL9lAdcNEel4ASKalJpKwmKSVy33o99QwzWcL20ODyf657LT5p1LcAFd0MN9zCNQ/wxuzt6RsfTz4imMVsFtPyPXNaQRvt/DLs5dH7d208NbBkFML8EmG4yU2LhUSEpk+OHpsx0SKDACD6m7kbMilhLe1VK3eObZwKpKI755S4Z+lr//yt8es9NRRoQ+6rb1KSGTaw/hPrL786e3doqUsoXCMs3KIsbAbZeGr02L/+j2ECwZ5pj6xkmKGs9G/73/Wrd6SEEQtcVEltwVJI5Uy58Eb6nZ+fHz3dKAU+tMFQA6GEmWyg3p2rD3/pX/dltiCGVCTFTaVuFrF0O31LL06e+XH2fU/Nfmkfk6XNq0fz7fSH2zfuG6Sssr9kGlXfeggddBYb+u+R9fv3SfsMNLR5slhWvmXltr/4I4sqaLkUMZfRl5sLbuUdydJP/i1EVmoR0Kj39ujdx8dPDHMDtXNWggi0zXtBmGuBJtqzhudNfRJEwkAe7Y3/3Ti1UcOwZABROoPmsazmr/pIGGFEG+Mj0pGnDs+cxHjNV5Py0IZPrT/55uy1oWWjrY+BlghR+lks9y0nepEu2OvSfdP+q6ystav7pf3/bf+5ZeX6nDACgvD6X932VvVdMoKJT88cXHDy8LRxjBr1xj6KiHtWbvvGP+/nPR1XbO8yHb+owpe4p/T79Psr/risxR21ES3+1uzNYWrA6/0t9WuVghsx37e8gL3XvjCLcNKiEcuS9bOyF4uB4jI4wqNawVzf7ZxN9JWbjp/LwXF1+nVxGTpaF7/YUakaa3c/7hJq3XZGd51tB3QnuVK3Io1sobVYfuABbbH6wFS3KTAVP55zqzTb1lfU1KSuVXff4LIpC7eAKuKOT6WqXLGTIGWb/ge7OXDlEvWZtQAAAABJRU5ErkJggg==";
    var url =
      "/local_call?local_action=share_params&arg0=" +
      encodeURIComponent(shareTitle) +
      "&arg1=" +
      encodeURIComponent(shareContent) +
      "&arg2=" +
      encodeURIComponent(shareIcon) +
      "&arg3=" +
      encodeURIComponent(openShareUrl) +
      "&arg4=" +
      encodeURIComponent(JSON.stringify(shareObj)) +
      "&arg5=" +
      encodeURIComponent(sharePlatforom) +
      "&arg6=" +
      encodeURIComponent(screenShotsFlag) +
      "&arg7=" +
      encodeURIComponent(imgBase64Url1) +
      "&arg8=" +
      encodeURIComponent(imgBase64Url);
    iosIframeLocalCall(url);
  }
}
function checkShareContent(content: string | undefined) {
  var enableContent = true;
  if (!content || content == undefined || content == "") {
    enableContent = false;
  }
  return enableContent;
}
function dealCheck(defaultVal: string, needVal: any) {
  let finalVal = defaultVal;
  if (checkShareContent(needVal)) {
    finalVal = needVal;
  }
  return finalVal;
}
/**
 * 设置/更新 meta信息
 * @param {Object} shareObj
 */
function updateShareMetaInfo(shareObj: { [x: string]: any }) {
  var doc = document;
  var metaNode = doc.getElementsByTagName("meta");
  for (var index = 0; index < metaNode.length; index++) {
    var metaInfo = metaNode[index];
    var metaAttr = metaInfo["attributes"];
    if (!metaAttr) {
      continue;
    }
    var metaAttrLen = metaAttr.length;
    for (var attrIndex = 0; attrIndex < metaAttrLen; attrIndex++) {
      var metaAttrIndexNode: any = metaAttr[attrIndex];
      var itemProp = metaAttrIndexNode["itemprop"];
      if (metaAttrIndexNode.name == "itemprop") {
        var shareTitle = shareObj["shareTitle"];
        var shareContent = shareObj["shareContent"];
        if (metaAttrIndexNode.value == "name") {
          metaInfo["content"] = shareTitle;
        }
        if (metaAttrIndexNode.value == "description") {
          metaInfo["content"] = shareContent;
        }
        if (metaAttrIndexNode.value == "qq_title") {
          metaInfo["content"] = dealCheck(shareTitle, shareObj["shareQqTitle"]);
        }
        if (metaAttrIndexNode.value == "qzone_title") {
          metaInfo["content"] = dealCheck(
            shareTitle,
            shareObj["shareQzoneTitle"]
          );
        }
        if (metaAttrIndexNode.value == "qq_content") {
          metaInfo["content"] = dealCheck(
            shareContent,
            shareObj["shareQqContent"]
          );
        }
        if (metaAttrIndexNode.value == "qzone_content") {
          metaInfo["content"] = dealCheck(
            shareContent,
            shareObj["shareQzoneContent"]
          );
        }
        if (metaAttrIndexNode.value == "wx_circle") {
          metaInfo["content"] = dealCheck(
            shareContent,
            shareObj["shareWxCircle"]
          );
        }
        if (metaAttrIndexNode.value == "wb_content") {
          metaInfo["content"] = dealCheck(
            shareContent,
            shareObj["shareWbContent"]
          );
        }
        if (metaAttrIndexNode.value == "share_url") {
          metaInfo["content"] = dealCheck("", shareObj["shareUrl"]);
        }
        if (metaAttrIndexNode.value == "image") {
          metaInfo["content"] = dealCheck("", shareObj["shareIcon"]);
        }
        if (metaAttrIndexNode.value == "share_pic_url") {
          metaInfo["content"] = dealCheck("", shareObj["sharePicUrl"]);
        }
        if (metaAttrIndexNode.value == "screen_shots_flag") {
          metaInfo["content"] = dealCheck("", shareObj["screenShotsFlag"]);
        }
      }
    }
  }
}

async function AccessWeixinShare(currentUrl: string) {
  //微信分享
  let ts = new Date().getTime();
  let noncestr = "Wm3WZYTPz0wzccnW";
  let ticket = await GetWeixinTicket();
  let arrTemp = [];
  arrTemp[0] = "jsapi_ticket=" + ticket;
  arrTemp[1] = "noncestr=" + noncestr;
  arrTemp[2] = "timestamp=" + ts;
  arrTemp[3] = "url=" + currentUrl;
  arrTemp.sort();
  let strTemp = arrTemp.join("&");
  strTemp = CryptoJS.SHA1(strTemp).toString(CryptoJS.enc.Hex);
  let strArr: any = new Object();
  strArr["sha1Str"] = strTemp;
  strArr["ts"] = ts;
  strArr["noncestr"] = noncestr;
  return strArr;
}
/**
 * 增加二次分享
 *
 * */
async function addWeixinShareSpecifyInfoV2(shareObj: { [x: string]: any }) {
  if (!window.tool.isWeixin()) {
    return;
  }
  var shareTitle = shareObj["shareTitle"];
  var shareContent = shareObj["shareContent"];
  var shareIcon = shareObj["shareIcon"];
  var shareWxCircle = dealCheck(shareContent, shareObj["shareWxCircle"]);

  var shareQqTitle = dealCheck(shareTitle, shareObj["shareQqTitle"]);

  var shareQqContent = dealCheck(shareContent, shareObj["shareQqContent"]);

  var shareQzoneTitle = dealCheck(shareTitle, shareObj["shareQzoneTitle"]);

  var shareQzoneContent = dealCheck(
    shareContent,
    shareObj["shareQzoneContent"]
  );

  var shareWbTitle = dealCheck(shareTitle, shareObj["shareWbTitle"]);

  var shareWbContent = dealCheck(shareContent, shareObj["shareWbContent"]);

  var shareLinkUrl = "window.location.href";

  var shareOpenUrl = dealCheck(shareLinkUrl, shareObj["shareUrl"]);

  var strArr = await AccessWeixinShare(window.location.href);
  var sha1Str = strArr["sha1Str"];
  var timestamp = strArr["ts"];
  var noncestr = strArr["noncestr"];
  // addWeixinShareViewInfo(sha1Str, timestamp, noncestr, shareTitle, shareContent, shareLinkUrl, shareIcon, shareOpenUrl);
  shareLinkUrl = shareLinkUrl.replace("v=*&", "");
  shareLinkUrl = shareLinkUrl.replace("&is_share=*", "");
  shareLinkUrl = shareLinkUrl.replace("user_id=", "MSEASE=");
  shareLinkUrl = shareLinkUrl.replace(
    "member=",
    window.tool.getUrlParam("user_id")
  );
  if (!shareOpenUrl) {
    shareOpenUrl = shareLinkUrl;
  }

  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
    appId: "wxa0bd6bb58c4f415f", // 必填，公众号的唯一标识
    timestamp: timestamp, // 必填，生成签名的时间戳
    nonceStr: noncestr, // 必填，生成签名的随机串
    signature: sha1Str, // 必填，签名，见附录1
    jsApiList: [
      "onMenuShareTimeline",
      "onMenuShareAppMessage",
      "onMenuShareQQ",
      "onMenuShareWeibo",
      "onMenuShareQZone",
      "showMenuItems",
    ], // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
  });
  wx.ready(function () {
    //验证通过
    //分享到朋友圈
    wx.onMenuShareTimeline({
      title: shareWxCircle, // 分享标题
      link: shareOpenUrl, // 分享链接
      imgUrl: shareIcon, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        if ("onYdShare" in window) {
          window.onYdShare();
        }
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
      },
    });
    //分享好友
    wx.onMenuShareAppMessage({
      title: shareTitle, // 分享标题
      desc: shareContent, // 分享描述
      link: shareOpenUrl, // 分享链接
      imgUrl: shareIcon, // 分享图标
      type: "link", // 分享类型,music、video或link，不填默认为link
      dataUrl: "", // 如果type是music或video，则要提供数据链接，默认为空
      success: function () {
        // 用户确认分享后执行的回调函数
        if ("onYdShare" in window) {
          window.onYdShare();
        }
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
      },
    });
    wx.onMenuShareQQ({
      title: shareQqTitle, // 分享标题
      desc: shareQqContent, // 分享描述
      link: shareOpenUrl, // 分享链接
      imgUrl: shareIcon, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        if ("onYdShare" in window) {
          window.onYdShare();
        }
      },
      cancel: function () {
        // 用户取消分享后执行的回调函
      },
    });
    wx.onMenuShareQZone({
      title: shareQzoneTitle, // 分享标题
      desc: shareQzoneContent, // 分享描述
      link: shareOpenUrl, // 分享链接
      imgUrl: shareIcon, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        if ("onYdShare" in window) {
          window.onYdShare();
        }
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
      },
    });
    wx.onMenuShareWeibo({
      title: shareWbTitle, // 分享标题
      desc: shareWbContent, // 分享描述
      link: shareOpenUrl, // 分享链接
      imgUrl: shareIcon, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        if ("onYdShare" in window) {
          window.onYdShare();
        }
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
      },
    });
  });
  wx.error(function (res: any) {
    //微信验证失败
  });
}
/**
 * 点击右上角分享 客户端调用此方法获得分享信息
 */
function MetaShareInfo() {
  var doc = document;
  var metaNode = doc.getElementsByTagName("meta");
  var shareTitle = "";
  var shareContent = "";
  var shareIcon = "";
  var shareWxCircle = "";
  var shareQqTitle = "";
  var shareQqContent = "";
  var shareQzoneTitle = "";
  var shareQzoneContent = "";
  var shareWbContent = "";
  var sharePicUrl = "";
  var screenShotsFlag: any = "";
  var openShareUrl = window.location.href;
  for (var index = 0; index < metaNode.length; index++) {
    var metaInfo = metaNode[index];
    var metaAttr = metaInfo["attributes"];
    if (!metaAttr) {
      continue;
    }
    var metaAttrLen = metaAttr.length;
    for (var attrIndex = 0; attrIndex < metaAttrLen; attrIndex++) {
      var metaAttrIndexNode: any = metaAttr[attrIndex];
      var itemProp = metaAttrIndexNode["itemprop"];
      if (metaAttrIndexNode.name == "itemprop") {
        let metaDesc = metaInfo["content"];
        if (metaAttrIndexNode.value == "description") {
          shareContent = metaDesc;
        }
        if (metaAttrIndexNode.value == "name") {
          shareTitle = metaDesc;
        }
        if (metaAttrIndexNode.value == "image") {
          shareIcon = metaDesc;
        }
        if (metaAttrIndexNode.value == "wx_circle") {
          shareWxCircle = metaDesc;
        }
        if (metaAttrIndexNode.value == "qq_title") {
          shareQqTitle = metaDesc;
        }
        if (metaAttrIndexNode.value == "qq_content") {
          shareQqContent = metaDesc;
        }
        if (metaAttrIndexNode.value == "qzone_title") {
          shareQzoneTitle = metaDesc;
        }
        if (metaAttrIndexNode.value == "qzone_content") {
          shareQzoneContent = metaDesc;
        }
        if (metaAttrIndexNode.value == "wb_content") {
          shareWbContent = metaDesc;
        }
        if (metaAttrIndexNode.value == "share_url") {
          openShareUrl = metaDesc;
        }
        if (metaAttrIndexNode.value == "share_pic_url") {
          sharePicUrl = metaDesc;
        }
        if (metaAttrIndexNode.value == "screen_shots_flag") {
          screenShotsFlag = metaDesc;
        }
      }
    }
  }
  openShareUrl = openShareUrl.replace(/&is_share=[a-z]+/g, "");
  openShareUrl = openShareUrl.replace(/&is_share=/g, "");
  openShareUrl = openShareUrl.replace(/\?user_id=[0-9]+&?/g, "?");
  openShareUrl = openShareUrl.replace(/\?user_id=[0-9]+/g, "");
  openShareUrl = openShareUrl.replace(/&user_id=[0-9]+/g, "");
  openShareUrl = openShareUrl.replace(/&user_id=/g, "");
  if (!checkShareContent(shareWxCircle)) {
    shareWxCircle = shareContent;
  }
  if (!checkShareContent(shareQqTitle)) {
    shareQqTitle = shareTitle;
  }
  if (!checkShareContent(shareQqContent)) {
    shareQqContent = shareContent;
  }
  if (!checkShareContent(shareQzoneTitle)) {
    shareQzoneTitle = shareTitle;
  }
  if (!checkShareContent(shareQzoneContent)) {
    shareQzoneContent = shareContent;
  }
  if (!checkShareContent(shareWbContent)) {
    shareWbContent = shareContent;
  }
  if (!checkShareContent(openShareUrl)) {
    shareWbContent = shareWbContent + openShareUrl;
  }
  if (window.tool.isAndroidWeb() && window.YDJSInterface) {
    setAppShareUrl(openShareUrl);
    if ("setMetaDataShareImgV2" in window.YDJSInterface && sharePicUrl != "") {
      window.YDJSInterface.setMetaDataShareImgV2(
        shareQzoneTitle,
        shareQzoneContent,
        shareIcon,
        shareWbContent,
        sharePicUrl,
        openShareUrl
      );
      return;
    }
    if ("setMetaDataShareInfoExv2" in window.YDJSInterface) {
      window.YDJSInterface.setMetaDataShareInfoExv2(
        shareTitle,
        shareContent,
        shareIcon,
        shareWxCircle,
        shareQqTitle,
        shareQqContent,
        shareQzoneContent,
        shareWbContent,
        shareQzoneTitle
      );
      return;
    }
  }
  var shareObj: any = new Object();
  shareObj["shareTitle"] = shareTitle;
  shareObj["shareContent"] = shareContent;
  shareObj["shareIcon"] = shareIcon;
  shareObj["shareUrl"] = openShareUrl;
  shareObj["sharePicUrl"] = sharePicUrl;
  shareObj["shareWxCircle"] = shareWxCircle;
  shareObj["shareQqTitle"] = shareQqTitle;
  shareObj["shareQqContent"] = shareQqContent;
  shareObj["shareQzoneTitle"] = shareQzoneTitle;
  shareObj["shareQzoneContent"] = shareQzoneContent;
  shareObj["shareWbContent"] = shareWbContent;
  if (sharePicUrl != "") {
    shareObj["shareType"] = 1;
    shareObj["sharePlatforom"] = -2;
  }
  shareObj = initShareObj(shareObj);
  screenShotsFlag = Boolean(screenShotsFlag);
  if (window.tool.isIosWeb()) {
    var strAction = "share_params";
    var imgBase64Url1 =
      "iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAIAAADZ8fBYAAADlElEQVR4AX2VA6xEVxCGv3/OuYvajdPGSRvUCGvFKsPGZuPGbsyaQW3btm27T6s70+Ttnpzcfcrd3Tl435n7z73z6+ifjnfkmGOx+V3jemmnpRIvE7LCTUY44GCCAOEgsAAAc8JwAHBhQYlRYBgKwh0MENmYDwwKmvoXNcRRWepuq0NjQdvklhQMddA1Vsk63FSWVLYJgrJTm3HhEoRgK1p41LvuoKOjW02OAM/CjSKoMLaia1y0LmgKGrrSKxse1DMDwNqYtbBU63p1ZyBl9TporNStng/hh9the9u+jiCBxeY3JGSQyqSBJeU/fPWt2VeFsJC01A2spDyL9lAdcNEel4ASKalJpKwmKSVy33o99QwzWcL20ODyf657LT5p1LcAFd0MN9zCNQ/wxuzt6RsfTz4imMVsFtPyPXNaQRvt/DLs5dH7d208NbBkFML8EmG4yU2LhUSEpk+OHpsx0SKDACD6m7kbMilhLe1VK3eObZwKpKI755S4Z+lr//yt8es9NRRoQ+6rb1KSGTaw/hPrL786e3doqUsoXCMs3KIsbAbZeGr02L/+j2ECwZ5pj6xkmKGs9G/73/Wrd6SEEQtcVEltwVJI5Uy58Eb6nZ+fHz3dKAU+tMFQA6GEmWyg3p2rD3/pX/dltiCGVCTFTaVuFrF0O31LL06e+XH2fU/Nfmkfk6XNq0fz7fSH2zfuG6Sssr9kGlXfeggddBYb+u+R9fv3SfsMNLR5slhWvmXltr/4I4sqaLkUMZfRl5sLbuUdydJP/i1EVmoR0Kj39ujdx8dPDHMDtXNWggi0zXtBmGuBJtqzhudNfRJEwkAe7Y3/3Ti1UcOwZABROoPmsazmr/pIGGFEG+Mj0pGnDs+cxHjNV5Py0IZPrT/55uy1oWWjrY+BlghR+lks9y0nepEu2OvSfdP+q6ystav7pf3/bf+5ZeX6nDACgvD6X932VvVdMoKJT88cXHDy8LRxjBr1xj6KiHtWbvvGP+/nPR1XbO8yHb+owpe4p/T79Psr/risxR21ES3+1uzNYWrA6/0t9WuVghsx37e8gL3XvjCLcNKiEcuS9bOyF4uB4jI4wqNawVzf7ZxN9JWbjp/LwXF1+nVxGTpaF7/YUakaa3c/7hJq3XZGd51tB3QnuVK3Io1sobVYfuABbbH6wFS3KTAVP55zqzTb1lfU1KSuVXff4LIpC7eAKuKOT6WqXLGTIGWb/ge7OXDlEvWZtQAAAABJRU5ErkJggg==";
    var url =
      "/local_call?local_action=" +
      strAction +
      "&arg0=" +
      encodeURIComponent(shareTitle) +
      "&arg1=" +
      encodeURIComponent(shareContent) +
      "&arg2=" +
      encodeURIComponent(shareIcon) +
      "&arg3=" +
      encodeURIComponent(openShareUrl) +
      "&arg4=" +
      encodeURIComponent(JSON.stringify(shareObj)) +
      "&arg6=" +
      encodeURIComponent(screenShotsFlag) +
      "&arg7=" +
      encodeURIComponent(imgBase64Url1) +
      "&arg8=" +
      encodeURIComponent(sharePicUrl);
    iosIframeLocalCall(url);
    return;
  }
  if ("setShareMetaInfo" in window.YDJSInterface && window.YDJSInterface) {
    window.YDJSInterface.setShareMetaInfo(
      shareTitle,
      shareContent,
      shareIcon,
      openShareUrl,
      JSON.stringify(shareObj)
    );
  }
}
// ios 如果我们连续 2 个 js 调 native，连续2次改document.location的话，在app中，
// 只能截获后面那次请求，前一次请求由于很快被替换掉，所以被忽略掉了，前一次请求返回数据丢失。
// 故换成iframe 来实现调用
function iosIframeLocalCall(url: string) {
  var iFrame: any;
  iFrame = document.createElement("iframe");
  iFrame.setAttribute("src", url);
  iFrame.setAttribute("style", "display:none;");
  iFrame.setAttribute("height", "0px");
  iFrame.setAttribute("width", "0px");
  iFrame.setAttribute("frameborder", "0");
  document.body.appendChild(iFrame);
  // 发起请求后这个 iFrame 就没用了，所以把它从 dom 上移除掉
  iFrame.parentNode.removeChild(iFrame);
  iFrame = null;
}

function setAppShareUrl(url: string) {
  if (window.YDJSInterface && "setPageShareUrl" in window.YDJSInterface) {
    window.YDJSInterface.setPageShareUrl(url);
  }
}
function initAppShareType(sharePlatforom: number) {
  //web和ios sharePlatforom -1:分享面板 0:新浪微博 1:微信聊天 2:微信朋友圈 4:QQ聊天 5:QQ空间
  //android 安卓分享面板类型：微信：0，朋友圈：1，微博:2, QQ：3，QQ空间：4
  switch (sharePlatforom) {
    case 0:
      sharePlatforom = 2;
      break;
    case 1:
      sharePlatforom = 0;
      break;
    case 2:
      sharePlatforom = 1;
      break;
    case 4:
      sharePlatforom = 3;
      break;
    case 5:
      sharePlatforom = 4;
      break;
  }
  return sharePlatforom;
}
function androidShareByType(shareObj: { [x: string]: any }) {
  var shareType = shareObj["shareType"];
  var sharePlatforom = shareObj["sharePlatforom"];
  var shareTitle = shareObj["shareTitle"];
  var shareContent = shareObj["shareContent"];
  var shareIcon = shareObj["shareIcon"];
  var shareUrl = shareObj["shareUrl"];
  var sharePic = shareObj["sharePicUrl"];
  var shareWxCircle = dealCheck(shareContent, shareObj["shareWxCircle"]);
  var shareQqTitle = dealCheck(shareTitle, shareObj["shareQqTitle"]);
  var shareQqContent = dealCheck(shareContent, shareObj["shareQqContent"]);
  var shareQzoneTitle = dealCheck(shareTitle, shareObj["shareQzoneTitle"]);
  var shareQzoneContent = dealCheck(
    shareContent,
    shareObj["shareQzoneContent"]
  );
  var shareWbContent = dealCheck(shareContent, shareObj["shareWbContent"]);

  if (
    window.YDJSInterface &&
    "setMetaDataShareImgExtra" in window.YDJSInterface &&
    shareType == 1
  ) {
    //分享图片
    window.YDJSInterface.setMetaDataShareImgExtra(
      shareQzoneTitle,
      shareQzoneContent,
      shareIcon,
      shareWbContent,
      sharePic,
      shareUrl,
      sharePlatforom
    );
    return;
  }
  //分享链接
  sharePic = "";
  if (
    window.YDJSInterface &&
    "setMetaDataShareTlInfoExtra" in window.YDJSInterface
  ) {
    window.YDJSInterface.setMetaDataShareTlInfoExtra(
      shareTitle,
      shareContent,
      shareIcon,
      shareWxCircle,
      shareQqTitle,
      shareQzoneTitle,
      shareQqContent,
      shareQzoneContent,
      shareWbContent,
      shareUrl,
      sharePlatforom
    );
    return;
  }
  ydShare(null, null);
}
/**
 * 把分享对象 转换成ios需要的样子
 * @param {Object} shareObj
 */
function initShareObj(sObj: any) {
  var shareType = sObj["shareType"];
  var sharePlatforom = sObj["sharePlatforom"];
  var shareTitle = sObj["shareTitle"];
  var shareContent = sObj["shareContent"];
  var shareIcon = sObj["shareIcon"];
  var openShareUrl = sObj["shareUrl"];
  var sharePic = sObj["sharePicUrl"];
  var shareWxCircle = sObj["shareWxCircle"];
  var shareQqTitle = sObj["shareQqTitle"];
  var shareQqContent = sObj["shareQqContent"];
  var shareQzoneTitle = sObj["shareQzoneTitle"];
  var shareQzoneContent = sObj["shareQzoneContent"];
  var shareWbContent = sObj["shareWbContent"];
  if (shareType == 1 && sharePlatforom != 5) {
    shareIcon = sharePic;
    openShareUrl = "";
  }
  var shareObj: any = new Object();
  shareObj["qq"] = {};
  shareObj["qq"]["title"] = shareTitle;
  shareObj["qq"]["text"] = shareContent;
  if (shareQqTitle != "") {
    shareObj["qq"]["title"] = shareQqTitle;
  }
  if (shareQqContent != "") {
    shareObj["qq"]["text"] = shareQqContent;
  }

  shareObj["qzone"] = {};
  shareObj["qzone"]["title"] = shareTitle;
  shareObj["qzone"]["text"] = shareContent;
  if (shareQzoneTitle != "") {
    shareObj["qzone"]["title"] = shareQzoneTitle;
  }
  if (shareQzoneContent != "") {
    shareObj["qzone"]["text"] = shareQzoneContent;
  }

  shareObj["wechat_session"] = {};
  if (shareTitle != "") {
    shareObj["wechat_session"]["title"] = shareTitle;
  }
  if (shareContent != "") {
    shareObj["wechat_session"]["text"] = shareContent;
  }

  //微信朋友圈title&content只有一个
  shareObj["wechat_timeline"] = {};
  shareObj["wechat_timeline"]["title"] = shareTitle;
  shareObj["wechat_timeline"]["text"] = shareContent;
  if (shareWxCircle != "") {
    shareObj["wechat_timeline"]["title"] = shareWxCircle;
    shareObj["wechat_timeline"]["text"] = shareWxCircle;
  }

  shareObj["sina"] = {};
  shareObj["sina"]["title"] = shareTitle;
  shareObj["sina"]["text"] = shareContent;
  if (shareWbContent != "") {
    //内容后面拼接链接 微博会自动识别链接。
    shareObj["sina"]["text"] = shareWbContent + openShareUrl;
  }

  if (shareIcon != "") {
    shareObj["qq"]["image"] = shareIcon;
    shareObj["qzone"]["image"] = shareIcon;
    shareObj["wechat_session"]["image"] = shareIcon;
    shareObj["wechat_timeline"]["image"] = shareIcon;
    shareObj["sina"]["image"] = shareIcon;
  }
  if (openShareUrl != "") {
    shareObj["qq"]["url"] = openShareUrl;
    shareObj["qzone"]["url"] = openShareUrl;
    shareObj["wechat_session"]["url"] = openShareUrl;
    shareObj["wechat_timeline"]["url"] = openShareUrl;
    shareObj["sina"]["url"] = "";
  }
  return shareObj;
}
function stopBubble(e: { stopPropagation: () => void }) {
  if (e && e.stopPropagation) e.stopPropagation();
  //非IE
  else (window.event as any).cancelBubble = true; //IE
}
function ydShare(type: string | null | undefined, event: null | undefined) {
  if (event != null) {
    stopBubble(event);
  }
  if (null == type) {
    window.location.href = "/local_call?local_action=share";
  } else {
    window.location.href = "/local_call?local_action=share&type=" + type;
  }
}
function onShare(that: { [funName: string]: any }) {
  if (!window.tool.isYuedong()) {
    window.global.toast("亲，请点击右上角分享按钮进行分享～");
  } else {
    ydShare(null, null);
  }
}
let shareCb = function () {};
//右上角分享 可以分享链接/图片/ios可分享截图
async function setSimpleShare(shareObj: any, cbFun: { (): void; (): void }) {
  await addWeixinShareSpecifyInfoV2(shareObj);
  updateShareMetaInfo(shareObj);
  if (cbFun) {
    shareCb = cbFun;
  }
}
function onYdShareCb() {
  shareCb();
}
function GetWeixinTicket() {
  return window.$http
    .post("/invite/get_wx_web_token", {})
    .then((res: { code: number; ticket: any }) => {
      if (res.code == 0) {
        return res.ticket;
      }
      return "";
    });
}

(function () {
  window.MetaShareInfo = () => {
    MetaShareInfo();
  };
  window.onYdShare = () => {
    onYdShareCb();
  };
})();

export {
  iosIframeLocalCall,
  addWeixinShareSpecifyInfoV2,
  commonShare,
  onShare,
  setSimpleShare,
  MetaShareInfo,
  AccessWeixinShare,
  onYdShareCb,
};
