UNPKG

captain-ui

Version:

有赞vue wap业务组件库

165 lines (137 loc) 4.58 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import Event from '../../common/utils/event'; var wx = require('./jweixin'); var defaultJsApiList = ['onMenuShareTimeline', 'onMenuShareAppMessage', 'hideOptionMenu', 'showOptionMenu']; var isWxApiReady = false; var isWxApiFailed = false; if (window.wx) { wx = window.wx; } /* * 暴露原生微信对象 */ export { wx }; /* * 微信设置中所有的回调由事件触发 */ export var event = new Event(); /* * 在微信中注入初始配置 */ export function setWxConfig(config) { // 默认授权的项目 var wxConfigs = _extends({ debug: false }, config); // jsApiList 合并 var jsApiList = defaultJsApiList.slice(0); if (Array.isArray(config.jsApiList)) { config.jsApiList.forEach(function (item) { if (jsApiList.indexOf(item) === -1) { jsApiList.push(item); } }); } wxConfigs.jsApiList = jsApiList; wx.config(wxConfigs); wx.ready(function () { isWxApiReady = true; event.trigger('init:success'); }); wx.error(function () { isWxApiFailed = true; event.trigger('init:fail'); }); } /* * 保证callback 在微信sdk初始化完成后调用 */ var cbQueue = []; var wxReadyTimer; export function wxReady(callback, failback) { if (isWxApiFailed) { failback && failback(); return; } if (isWxApiReady) { // 清空队列,防止回调重复执行 var tempQueue = cbQueue; cbQueue = []; tempQueue.forEach(function (cb) { cb && cb(); }); callback && callback(); } else { // 添加回调队列,确保回调执行顺序,切记不要使用异步函数 if (!~cbQueue.indexOf(callback) && typeof callback === 'function') { cbQueue.push(callback); } // 不要重复开启多个定时器 if (wxReadyTimer) clearTimeout(wxReadyTimer); wxReadyTimer = setTimeout(function () { wxReady(); }, 1000); } } /* * 在微信中注入分享配置 */ export function setWxShare(shareConfig) { wxReady(function () { changeShareTimeLineData(shareConfig); changeMenuShareAppMessageData(shareConfig); changeMenuShareQQData(shareConfig); changeMenuShareQZoneData(shareConfig); }); } // 修改 朋友圈分享 设置,以 shareConfig.timeline shareConfig 顺序覆盖 function changeShareTimeLineData(shareConfig) { var timelineShareConfig = _extends({}, shareConfig, shareConfig.timeline); // 动态的title,根据页面变动的内容而变 if (timelineShareConfig.timeLineTitle) timelineShareConfig.title = timelineShareConfig.timeLineTitle; wx.onMenuShareTimeline(_extends({}, timelineShareConfig, { success: function success(res) { event.trigger('share:timeline:success', res); timelineShareConfig.success && timelineShareConfig.success(res); }, trigger: function trigger() { event.trigger('share:timeline:trigger'); timelineShareConfig.trigger && timelineShareConfig.trigger(); } })); } // 修改 微信好友分享 设置 function changeMenuShareAppMessageData(shareConfig) { var appMessageShareConfig = _extends({}, shareConfig, shareConfig.appMessage); wx.onMenuShareAppMessage(_extends({}, appMessageShareConfig, { success: function success(res) { event.trigger('share:appMessage:success', res); appMessageShareConfig.success && appMessageShareConfig.success(res); }, trigger: function trigger() { event.trigger('share:appMessage:trigger'); appMessageShareConfig.trigger && appMessageShareConfig.trigger(); } })); } // 修改 qq好友分享 设置 function changeMenuShareQQData(shareConfig) { var qqShareConfig = _extends({}, shareConfig, shareConfig.qq); wx.onMenuShareQQ(_extends({}, qqShareConfig, { success: function success(res) { event.trigger('share:qq:success', res); qqShareConfig.success && qqShareConfig.success(res); }, trigger: function trigger() { event.trigger('share:qq:trigger'); qqShareConfig.trigger && qqShareConfig.trigger(); } })); } // 修改 qq空间分享 设置 function changeMenuShareQZoneData(shareConfig) { var qzoneShareConfig = _extends({}, shareConfig, shareConfig.qzone); wx.onMenuShareQZone(_extends({}, qzoneShareConfig, { success: function success(res) { event.trigger('share:qzone:success', res); qzoneShareConfig.success && qzoneShareConfig.success(res); }, trigger: function trigger() { event.trigger('share:qzone:trigger'); qzoneShareConfig.trigger && qzoneShareConfig.trigger(); } })); }