165 lines
4.3 KiB
TypeScript
165 lines
4.3 KiB
TypeScript
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 () { },
|
||
});
|
||
},
|
||
},
|
||
});
|