let APPID = '';
const isDev = false

const API_BASE="http://127.0.0.1:9087"


/**
 * 获取 code
 * @returns 
 */
export function getCode () {
    if (isDev) return '123';
  
    const matched = /[?&]*code=([^&]+)/.exec(location.search)
    if (matched) {
      return decodeURIComponent(matched[1])
    }
  }
  
  /**
   * 跳转授权页面
   */
  export function redirect () {
    if (isDev) return;
  
    const appid = APPID || 'wxd3bab568bc42d1de';
    const local = encodeURIComponent(location.origin + location.pathname)
    const scope = 'snsapi_userinfo'; // snsapi_base
    const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${local}&response_type=code&scope=${scope}&state=123#wechat_redirect`
    window.location.href = url;
  }
  function wxsdk() {
    // API_BASE 来源 public/config.js
    const apiBase = API_BASE // import.meta.env.VITE_APP_API_BASE
  
    // 分享接口
    const shareAPIs = [
      // 自定义“分享给朋友”及“分享到QQ”按钮的分享内容（1.4.0）
      'updateAppMessageShareData',
      // 自定义“分享到朋友圈”及“分享到 QQ 空间”按钮的分享内容（1.4.0）
      'updateTimelineShareData',
      // 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口（即将废弃）
      'onMenuShareTimeline',
      // 获取“分享给朋友”按钮点击状态及自定义分享内容接口（即将废弃）
      'onMenuShareAppMessage',
      // 获取“分享到QQ”按钮点击状态及自定义分享内容接口（即将废弃）
      'onMenuShareQQ',
      // 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口
      'onMenuShareWeibo',
      // 获取“分享到 QQ 空间”按钮点击状态及自定义分享内容接口（即将废弃）
      'onMenuShareQZone',
    ]
  
    let inited = false;
  
    function init() {
      if (isDev) return;
      const url = window.location.href;
  
      // 请求后台接口
      fetch(`${apiBase}/api/wx/jsapi?url=${encodeURIComponent(url)}`).then(res => res.json()).then((res) => {
        if (res.code === 1000) {
          const data = res.data;
  
          APPID = data.appId;
  
          wx.config({
            debug: isDev, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来，若要查看传入的参数，可以在 pc 端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。
            appId: data.appId, // 必填，公众号的唯一标识
            timestamp: data.timestamp, // 必填，生成签名的时间戳
            nonceStr: data.nonceStr, // 必填，生成签名的随机串
            signature: data.signature,// 必填，签名
            jsApiList: [
              ...shareAPIs,
              'openLocation',
            ] // 必填，需要使用的 JS 接口列表
          });
        }
      })
    }
  
    function share(params = {}) {
      if (isDev) return;
  
      if (!inited) {
        init();
      }
  
      wx.ready(() => {
  
        const shareData = {
          ...shareOptTpl,
          ...params
        }
  
        console.log('---分享参数-->', shareData);
  
        for (let api of shareAPIs) {
          wx[api]({
            ...shareData,
            success: () => {
              console.log('分享成功: ', api)
            },
          });
        }
      });
  
      wx.error(function(res){
        console.error('wx js-sdk error');
        console.error(res);
        console.error('<==============');
      });
    }
  
    return {
      share,
      getCode,
      redirect,
    }
  }
  export default wxsdk;