import { ref } from 'vue';
import jWeixin from 'weixin-js-sdk';
import { defineStore } from 'pinia';
import { getJsapiSignatureApi } from '@/api';
export const shareConfigStore = defineStore('shareConfigStore', () => {
  const appId = ref('');
  const initWeixinShareConfig = async (options?: any) => {
    // 动态获取当前的页面链接并且确保链接后面不能有#号
    const linkUrl = window.location.href.split('#')[0];
    // 获取请求服务端获取签名信息
    const res = await getJsapiSignatureApi({ url: linkUrl });
    if (res.code === 200) {
      appId.value = res.data.appId || '';
      jWeixin.config({
        debug: false, // 根据服务端来控制是否开启调试模式
        appId: res.data.appId,
        timestamp: res.data.timestamp,
        nonceStr: res.data.nonceStr,
        signature: res.data.signature,
        jsApiList: [
          'updateAppMessageShareData',
          'updateTimelineShareData',
          'scanQRCode',
          'checkJsApi',
        ],
      });
      jWeixin.checkJsApi({
        jsApiList: ['scanQRCode'], // 需要检测的JS接口列表，所有JS接口列表见附录2,
        success: function (res) {
          console.log('checkJsApi', res);
          // 以键值对的形式返回，可用的api值true，不可用为false
          // 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
        },
        fail: function () {
          alert('error' + JSON.stringify(error));
        },
      });

      setTimeout(() => {
        jWeixin.ready(() => {
          // 自定义“分享给朋友”及“分享到QQ”按钮的分享内容（1.4.0）
          const shareData = {
            title: options.title || '', // 分享的标题
            desc: options.desc || '', // 分享的描述
            link: options.link, // 分享的链接
            imgUrl: options.imgUrl || '', // 分享的图片链接
            success(response) {
              console.log('success', response);
            },
          };
          // 分享给朋友接口
          jWeixin.updateAppMessageShareData({ ...shareData });
          // 分享到朋友圈接口
          jWeixin.updateTimelineShareData({ ...shareData });
        });
      }, 500);
      jWeixin.error(res => {
        console.log('微信配置失败');
      });
    }
  };

  return {
    initWeixinShareConfig,
    appId,
  };
});
