cankao-h5/src/stores/shareStore.ts

165 lines
4.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { defineStore } from "pinia";
import wx from "weixin-js-sdk";
import { getWeChatSdkData } from "@/api/index";
import axios from "axios";
interface IWxConfig {
appId: string;
timestamp: number;
nonceStr: string;
signature: string;
[key: string]: any;
}
interface IWxShareData {
title: string;
desc: string;
link: string;
imgUrl: string;
success?: () => void;
}
interface IShareStore {
inited: boolean;
url: string;
redirectUrl: string;
shareData: IWxShareData;
}
export const useShareStore = defineStore("share", {
state: (): IShareStore => ({
inited: false,
url: import.meta.env.VITE_SHARE_DOMAIN,
redirectUrl: import.meta.env.VITE_SHARE_REDIRECT,
shareData: {
title: "中证参考",
desc: "天下事 秒知道",
link: import.meta.env.VITE_SHARE_DOMAIN,
imgUrl: import.meta.env.VITE_SHARE_DOMAIN + "/static/share-default.jpg",
},
}),
actions: {
// 初始化jssdk配置
initWxConfig(data?: IWxShareData) {
const url = window.location.href.split("#")[0];
data = data || this.shareData;
if (this.inited) {
this.wxReady(data);
return;
}
axios({
url: "https://cankao.cs.com.cn/apih5/wechat/share",
method: "get",
params: { url },
responseType: "json",
}).then((res: any) => {
const data: IWxConfig = res.data.data;
// console.log("🚀 ~ getWeChatSdkData ~ data:", data);
uni.showToast({
title: data.appId
})
wx.config({
debug: true,
appId: data.appId,
timestamp: data.timestamp,
nonceStr: data.nonceStr,
signature: data.signature,
jsApiList: [
"updateAppMessageShareData",
"updateTimelineShareData",
"onMenuShareTimeline",
"onMenuShareAppMessage",
],
});
this.wxReady(this.shareData);
wx.error((err) => {
console.log("🚀 ~ err:", err);
});
});
// getWeChatSdkData({ url }).then((res: any) => {
// const data: IWxConfig = res.data;
// console.log("🚀 ~ getWeChatSdkData ~ data:", data);
// wx.config({
// debug: false,
// appId: data.appId,
// timestamp: data.timestamp,
// nonceStr: data.nonceStr,
// signature: data.signature,
// jsApiList: [
// "updateAppMessageShareData",
// "updateTimelineShareData",
// "onMenuShareTimeline",
// "onMenuShareAppMessage",
// ],
// });
// this.wxReady(this.shareData);
// wx.error((err) => {
// console.log("🚀 ~ err:", err);
// });
// });
},
// wx.ready
wxReady(data: IWxShareData) {
// console.log("output >>>>> wxShare -- this.inited", this.inited);
if (this.inited) {
this.wxUpdateShare(data);
} else {
wx.ready(() => {
this.inited = true;
this.wxUpdateShare(data);
});
}
},
// 修改转发内容
wxUpdateShare(data: IWxShareData) {
/**
* 获取“分享给朋友”及“分享到QQ”按钮点击状态及自定义分享内容接口
*/
wx.updateAppMessageShareData({
title: data.title,
desc: data.desc,
link: data.link,
imgUrl: data.imgUrl,
success: function () { },
});
/**
* 获取“分享到朋友圈”及“分享到QQ空间”按钮点击状态及自定义分享内容接口
*/
wx.updateTimelineShareData({
title: data.title,
link: data.link,
imgUrl: data.imgUrl,
success: function () { },
});
/**
* 获取“分享给朋友”按钮点击状态及自定义分享内容接口
*/
wx.onMenuShareAppMessage({
title: data.title,
desc: data.desc,
link: data.link,
imgUrl: data.imgUrl,
success: function () { },
cancel: function () { },
});
/**
* 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
*/
wx.onMenuShareTimeline({
title: data.title,
link: data.link,
imgUrl: data.imgUrl,
success: function () { },
cancel: function () { },
});
},
},
});