// 微信服务号分享功能
import wx from 'weixin-js-sdk'
import {getSignature} from "@/api";
import { h5Url } from '@/common/config.js';
/**
 * 初始化微信 JS-SDK
 * @param {Object} config - 微信 JS-SDK 配置参数
 * @returns {Promise} - 初始化成功返回 resolve，失败返回 reject
 */
export function initWechatSDK(config) {
  return new Promise((resolve, reject) => {
    if (typeof wx === 'undefined') {
      console.error('微信 JS-SDK 未加载');
      reject(new Error('微信 JS-SDK 未加载'));
      return;
    }

    wx.config({
      debug: false,
      appId: config.appId,
      timestamp: config.timestamp,
      nonceStr: config.nonceStr,
      signature: config.signature,
      jsApiList: [
        'updateAppMessageShareData',
        'updateTimelineShareData',
        'onMenuShareAppMessage',
        'onMenuShareTimeline',
        'launchMiniProgram'
      ],
      openTagList: ['wx-open-launch-weapp']
    });

    wx.ready(function() {
      console.log('微信 JS-SDK 初始化成功');
      resolve();
    });

    wx.error(function(res) {
      console.error('微信 JS-SDK 初始化失败:', res);
      reject(res);
    });
  });
}

/**
 * 配置微信分享参数
 * @param {Object} options - 分享配置选项
 * @param {string} options.title - 分享标题
 * @param {string} options.desc - 分享描述
 * @param {string} options.link - 分享链接
 * @param {string} options.imgUrl - 分享图标
 */
export function configWechatShare(options) {
  if (typeof wx === 'undefined') {
    console.error('微信 JS-SDK 未加载');
    return;
  }

  const { title, desc, link, imgUrl } = options;

  // 分享给朋友
  wx.updateAppMessageShareData({
    title: title,
    desc: desc,
    link: link,
    imgUrl: imgUrl,
    success: function() {
      console.log('分享给朋友成功');
    },
    cancel: function() {
      console.log('分享给朋友取消');
    }
  });

  // 分享到朋友圈
  wx.updateTimelineShareData({
    title: title,
    link: link,
    imgUrl: imgUrl,
    success: function() {
      console.log('分享到朋友圈成功');
    },
    cancel: function() {
      console.log('分享到朋友圈取消');
    }
  });

  // 兼容旧版本
  wx.onMenuShareAppMessage({
    title: title,
    desc: desc,
    link: link,
    imgUrl: imgUrl,
    success: function() {
      console.log('分享给朋友成功（旧版本）');
    },
    cancel: function() {
      console.log('分享给朋友取消（旧版本）');
    }
  });

  wx.onMenuShareTimeline({
    title: title,
    link: link,
    imgUrl: imgUrl,
    success: function() {
      console.log('分享到朋友圈成功（旧版本）');
    },
    cancel: function() {
      console.log('分享到朋友圈取消（旧版本）');
    }
  });
}

/**
 * 处理微信服务号分享
 * @param {Object} shareData - 分享数据
 */
export async function handleServiceShare(shareData) {
  // 这里可以根据实际需求，调用后端接口获取微信 JS-SDK 配置
  let url = `${h5Url}/`
  const res = await getSignature({url:url})
  // 假设已经获取到配置信息
  const wxConfig = {
    appId: res.data.appId, // 从后端获取
    timestamp: res.data.timestamp, // 从后端获取
    nonceStr: res.data.nonceStr, // 从后端获取
    signature: res.data.signature // 从后端获取
  };

  // 初始化微信 JS-SDK
  initWechatSDK(wxConfig);

  // 配置分享参数
  configWechatShare({
    title: shareData.title || '广誉远 - 积分任务',
    desc: shareData.desc || '完成任务获取积分，兑换好礼',
    link: shareData.link || window.location.href,
    imgUrl: shareData.imgUrl || '/static/points/point.png'
  });

  // 提示用户分享
  uni.showToast({
    title: '请点击右上角分享到微信',
    icon: 'none',
    duration: 2000
  });
}

/**
 * 处理微信服务号调整小程序
 * @param {Object} shareData - 分享数据
 */
export async function handleServiceAdjustMiniProgram() {
  // 这里可以根据实际需求，调用后端接口获取微信 JS-SDK 配置
  let url = `${h5Url}/`
  const res = await getSignature({url:url})
  // 假设已经获取到配置信息
  const wxConfig = {
    appId: res.data.appId, // 从后端获取
    timestamp: res.data.timestamp, // 从后端获取
    nonceStr: res.data.nonceStr, // 从后端获取
    signature: res.data.signature // 从后端获取
  };

  // 初始化微信 JS-SDK
  await initWechatSDK(wxConfig);
  // 3. 生成抽奖按钮 HTML
  //return `<wx-open-launch-weapp id="launch-btn" appid="wxab9634bf98628a03" path="${url}"><script type="text/wxtag-template"><style>.btn{padding:12px 24px;background:#07c160;color:#fff;border:none;border-radius:8px;font-size:16px;}</style><button class="btn">打开小程序指定页面</button></script></wx-open-launch-weapp>`;
}
