wxJsFunc.js 7.23 KB
/**
 * Created by shipfi on 2016/9/30.
 */

import _ from 'lodash';
import cookieManager from './cookieManager';
import api from '../api/index';

let __instance = (function () {
    let instance;
    return (newInstance) => {
        if (newInstance)
            instance = newInstance;
        return instance;
    }
}());

class WxJsFunc {
    constructor() {
        if (__instance())
            return __instance();

        this.foo = 'bar';
        this.wxObject = null;
        this.wxTool = null;
        __instance(this)
    }

    using(_wxObject, _wxTool) {
        this.wxObject = _wxObject;
        this.wxTool = _wxTool;
    }


    shareFriends() {
        console.log(this.wxObject);
        if (this.wxObject && typeof this.wxObject.onMenuShareAppMessage != 'undefined') {
            self = this;
            return function (options) {
                self.wxObject.onMenuShareAppMessage({
                    title: options.title, // 分享标题
                    link: options.link, // 分享链接
                    imgUrl: options.imgUrl, // 分享图标
                    desc: options.desc, // 分享描述
                    type: 'link', // 分享类型,music、video或link,不填默认为link
                    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空

                    trigger: function (res) {
                        // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回

                    },
                    success: function (res) {

                    },
                    cancel: function (res) {

                    },
                    fail: function (res) {

                    }
                });
            };
        } else {
            return null;
        }

    }

    /**
     * 分享接口
     * @param options
     */
    shareOthers(options) {
        if (this.wxObject && typeof this.wxObject.onMenuShareAppMessage != 'undefined') {

            var title = '[' + options.title.substr(0, 30) + ']';
            var titleInShareOthers = options.title.substr(0, 30);
            var descInShareOthers = options.desc.substr(0, 100);

            if (options.shareType == 'TOPIC') {
                title = '[' + options.grpName + ']' + titleInShareOthers;
                descInShareOthers = '[' + options.grpName + ']' + descInShareOthers;
            }

            // 分享给朋友
            this.wxObject.onMenuShareAppMessage({
                title: titleInShareOthers, // 分享标题
                link: options.link, // 分享链接
                imgUrl: options.imgUrl, // 分享图标
                desc: descInShareOthers, // 分享描述
                type: 'link', // 分享类型,music、video或link,不填默认为link
                dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空

                trigger: function (res) {
                    // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回

                },
                success: function (res) {
                    if (options.notifyAPI && 'topicId' in options) {
                        api.postTopicShare(options.topicId, 2).then(function (shareRes) {
                            if (typeof options.success == 'function') {
                                options.success(shareRes);
                            }
                        }, function (shareError) {
                            if (typeof options.error == 'function') {
                                options.error(shareError);
                            }
                        });
                    } else {
                        if (typeof options.success == 'function') {
                            options.success(1);
                        }
                    }
                },
                cancel: function (res) {

                },
                fail: function (res) {

                }
            });

            // 分享到朋友圈
            this.wxObject.onMenuShareTimeline({
                title: title, // 分享标题
                link: options.link, // 分享链接
                imgUrl: options.imgUrl, // 分享图标
                success: function () {
                    // 用户确认分享后执行的回调函数
                    if (options.notifyAPI && 'topicId' in options) {
                        api.postTopicShare(options.topicId, 1).then(function (shareRes) {
                            if (typeof options.success == 'function') {
                                options.success(shareRes);
                            }
                        }, function (shareError) {
                            if (typeof options.error == 'function') {
                                options.error(shareError);
                            }
                        });
                    } else {
                        if (typeof options.success == 'function') {
                            options.success(1);
                        }
                    }
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数

                }
            });

            // 分享到QQ
            this.wxObject.onMenuShareQQ({
                title: title, // 分享标题
                link: options.link, // 分享链接
                imgUrl: options.imgUrl, // 分享图标
                desc: descInShareOthers, // 分享描述
                success: function () {
                    // 用户确认分享后执行的回调函数
                    if (options.notifyAPI && 'topicId' in options) {
                        if (options.notifyAPI && 'topicId' in options) {
                            api.postTopicShare(options.topicId, 3).then(function (shareRes) {
                                if (typeof options.success == 'function') {
                                    options.success(shareRes);
                                }
                            }, function (shareError) {
                                if (typeof options.error == 'function') {
                                    options.error(shareError);
                                }
                            });
                        } else {
                            if (typeof options.success == 'function') {
                                options.success(1);
                            }
                        }
                    }
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数
                }
            });


        }
    }

    /**
     * 隐藏菜单项接口
     * @param options
     */
    hideMenuItems() {
        if (this.wxObject && typeof this.wxObject.hideMenuItems != 'undefined') {
            this.wxObject.hideMenuItems({
                menuList: [
                    'menuItem:copyUrl',
                    'menuItem:openWithQQBrowser',
                    'menuItem:openWithSafari'
                ]
            });
        }
    }
}

let wxJsFunc = new WxJsFunc();

export {wxJsFunc}