You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

144 lines
3.2 KiB

import { img, isWeixinBrowser, currRoute, currShareRoute } from '@/utils/common'
import { onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
import { getShareInfo } from '@/app/api/diy';
// #ifdef H5
import wechat from '@/utils/wechat'
// #endif
export const useShare = () => {
var wechatOptions: any = {};
var weappOptions:any = {};
const wechatInit = () => {
if (!isWeixinBrowser()) return;
// 初始化sdk
wechat.init();
}
// 微信公众号分享
const wechatShare = () => {
if (!isWeixinBrowser()) return;
wechat.share(wechatOptions);
}
const getQuery = ()=>{
let query:any = currShareRoute().params;
let wap_member_id = uni.getStorageSync('wap_member_id');
if (wap_member_id) {
query.mid = wap_member_id;
}
let queryStr = [];
for (let key in query) {
queryStr.push(key + '=' + query[key]);
}
return queryStr
}
const setShare = (options : any = {}) => {
if(currRoute() == '') return;
let queryStr = getQuery();
// #ifdef H5
let h5Link = location.origin + location.pathname + (queryStr.length > 0 ? '?' + queryStr.join('&') : '');
wechatOptions = {
link: h5Link
}
// #endif
// #ifdef MP-WEIXIN
weappOptions = {
path: '/' + currRoute() + (queryStr.length > 0 ? '?' + queryStr.join('&') : ''),
query: queryStr.join('&'),
}
// #endif
if (options && options.wechat && options.weapp) {
// #ifdef H5
wechatOptions.title = options.wechat.title || ''
wechatOptions.link = options.wechat.link || h5Link
wechatOptions.desc = options.wechat.desc || ''
wechatOptions.imgUrl = options.wechat.url ? img(options.wechat.url) : ''
wechatShare()
// #endif
// #ifdef MP-WEIXIN
weappOptions.title = options.weapp.title || ''
weappOptions.query = options.weapp.path || queryStr.join('&')
weappOptions.imageUrl = options.weapp.url ? img(options.weapp.url) : ''
// #endif
} else {
getShareInfo({
route: '/' + currRoute(),
params: JSON.stringify(currShareRoute().params)
}).then((res: any) => {
let data = res.data;
// #ifdef H5
let wechat = data.wechat;
if (wechat) {
wechatOptions.title = wechat.title
wechatOptions.desc = wechat.desc
wechatOptions.imgUrl = wechat.url ? img(wechat.url) : ''
}else{
wechatOptions.title = document.title;
wechatOptions.desc = ''
}
wechatShare()
// #endif
// #ifdef MP-WEIXIN
let weapp = data.weapp;
if (weapp) {
weappOptions.title = weapp.title
weappOptions.imageUrl = weapp.url ? img(weapp.url) : ''
}
// #endif
})
}
uni.setStorageSync('weappOptions', weappOptions)
}
// 小程序分享,分享给好友
const shareApp = (options = {}) => {
onShareAppMessage(() => {
let config:any= uni.getStorageSync('weappOptions')
if(!config) config = {}
return {
...config,
...options
}
})
}
// 小程序分享,分享到朋友圈
const shareTime = (options = {}) => {
onShareTimeline(() => {
let config:any= uni.getStorageSync('weappOptions')
if(!config) config = {}
return {
...config,
...options
}
})
}
return {
wechatInit:wechatInit,
setShare: setShare,
onShareAppMessage: shareApp,
onShareTimeline: shareTime,
}
}