| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import { getShareConfigApi } from "../../api/share.api";
- import ShareConfigModel from "../../store/models/shareConfig.model";
- const shareConfigModel = ShareConfigModel.getInstance();
- /**
- * 初始化分享配置
- */
- export const initShareConfig = async () => {
- try {
- shareConfigModel.clear();
- const shareConfigData = await getShareConfigApi()
- if(shareConfigData.length){
- // 从数组中随机选择一个分享配置
- const randomShareConfig = shareConfigData[Math.floor(Math.random() * shareConfigData.length)];
- shareConfigModel.save(randomShareConfig)
- }
- return Promise.resolve()
- } catch (error) {
- return Promise.reject(error)
- }
- }
- /**
- * 开启系统分享
- */
- export const openSystemShare = async () => {
- const shareConfig = shareConfigModel.get()
- if (!shareConfig) {
- return
- }
- try {
- // 开启分享按钮
- tt.showShareMenu({});
- await initShareConfig();
- let shareData = generateShareData({});
- tt.onShareAppMessage(() => {
- return shareData;
- });
- return Promise.resolve();
- } catch (error) {
- return Promise.reject(error);
- }
- }
- /**
- * 主动发起分享
- */
- export const share = async(data) => {
- const shareConfig = shareConfigModel.get()
- if (!shareConfig) {
- return
- }
- try {
- await initShareConfig();
- // 发起分享
- let shareData = generateShareData(data);
- tt.shareAppMessage(shareData);
- return Promise.resolve();
- } catch (error) {
- return Promise.reject(error);
- }
- }
- /**
- * 主动监听研发透传参数
- */
- export const onShareAppMessage = (data,menus=['shareAppMessage']) => {
- console.log("onShareAppMessage入参" + JSON.stringify(data));
- //先off,再on
- tt.offShareAppMessage();
- let shareData = generateShareData(data);
- tt.showShareMenu({});
- tt.onShareAppMessage(() => {
- return shareData;
- });
- };
- /**
- * 构建分享数据
- * @param data
- * @returns
- */
- const generateShareData = (data) => {
- let shareConfigInfo = shareConfigModel.get();
- let shareData = {
- title: shareConfigInfo.title,
- imageUrl: shareConfigInfo.imageUrl,
- query: shareConfigInfo.query,
- };
- let share_ext = "";
- // 记录分享透传参数
- if (data.hasOwnProperty("title") && data.title) shareData.title = data.title;
- if (data.hasOwnProperty("imageUrl") && data.imageUrl) shareData.imageUrl = data.imageUrl;
- if (data.hasOwnProperty("ext") && data.ext) share_ext = data.ext;
- //前面这个share_ext是研发透传进来的,后面这个是服务端传进来的
- shareData.query += shareConfigInfo.share_ext;
- if (share_ext) {
- shareData.query += `&share_ext=` + share_ext;
- }
- return shareData;
- };
|