
function wxsdk(url) {
  const isDev = import.meta.env.DEV

  // 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',
  ]

  function init() {
    // 请求后台接口
    fetch(`${apiBase}?url=${encodeURIComponent(url)}`).then(res => res.json()).then((res) => {
      if (res.code === 1000) {
        const data = res.data;

        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 接口列表
        });
      }
    })
  }

  // 立即执行
  init();

  function share(params = {}) {
    if (isDev) return;

    wx.ready(() => {
      for (let api of shareAPIs) {
        if (typeof wx[api] === 'function') continue;

        wx[api]({
          ...shareOptTpl,
          ...params
        })
      }
    });
  }

  return {
    share
  }
}

export default wxsdk;
