import browser from '@/utils/browser'
import jsonp from 'jsonp'
function toConfigure() {
    return new Promise((resolve, reject) => {
        let name = '中免项目'
        name = encodeURIComponent(name)
        let uri = encodeURIComponent(location.href.split('#')[0])
        jsonp(
            '//www.4dage.com/wechat/jssdk/share?name=' + name + '&uri=' + uri,
            {
                param: 'callback',
            },
            function (err, data) {
                console.log(data, '-------------------------------------=========')
                wx.config({
                    debug: false,
                    appId: data.appId,
                    timestamp: data.timestamp,
                    nonceStr: data.nonceStr,
                    signature: data.signature,
                    jsApiList: [
                        'checkJsApi',
                        'onMenuShareTimeline',
                        'onMenuShareAppMessage',
                        'updateTimelineShareData',
                        'updateAppMessageShareData',
                        'onMenuShareQQ',
                        'onMenuShareWeibo',
                        'hideMenuItems',
                        'showMenuItems',
                        'hideAllNonBaseMenuItem',
                        'showAllNonBaseMenuItem',
                        'translateVoice',
                        'startRecord',
                        'stopRecord',
                        'onRecordEnd',
                        'playVoice',
                        'pauseVoice',
                        'stopVoice',
                        'uploadVoice',
                        'downloadVoice',
                        'chooseImage',
                        'previewImage',
                        'uploadImage',
                        'downloadImage',
                        'getNetworkType',
                        'openLocation',
                        'getLocation',
                        'hideOptionMenu',
                        'showOptionMenu',
                        'closeWindow',
                        'scanQRCode',
                        'chooseWXPay',
                        'openProductSpecificView',
                        'addCard',
                        'chooseCard',
                        'openCard',
                    ],
                })
                resolve()
            }
        )

        // jsonp({
        //     url: '//www.4dage.com/wechat/jssdk/share',
        //     data: {
        //         name: name,
        //         uri: location.href.split('#')[0],
        //     },
        //     // 把前端方法作为参数传递给服务器
        //     success: function (data) {
        //         console.log(data)
        //         wx.config({
        //             debug: false,
        //             appId: data.appId,
        //             timestamp: data.timestamp,
        //             nonceStr: data.nonceStr,
        //             signature: data.signature,
        //             jsApiList: [
        //                 'checkJsApi',
        //                 'onMenuShareTimeline',
        //                 'onMenuShareAppMessage',
        //                 'updateTimelineShareData',
        //                 'updateAppMessageShareData',
        //                 'onMenuShareQQ',
        //                 'onMenuShareWeibo',
        //                 'hideMenuItems',
        //                 'showMenuItems',
        //                 'hideAllNonBaseMenuItem',
        //                 'showAllNonBaseMenuItem',
        //                 'translateVoice',
        //                 'startRecord',
        //                 'stopRecord',
        //                 'onRecordEnd',
        //                 'playVoice',
        //                 'pauseVoice',
        //                 'stopVoice',
        //                 'uploadVoice',
        //                 'downloadVoice',
        //                 'chooseImage',
        //                 'previewImage',
        //                 'uploadImage',
        //                 'downloadImage',
        //                 'getNetworkType',
        //                 'openLocation',
        //                 'getLocation',
        //                 'hideOptionMenu',
        //                 'showOptionMenu',
        //                 'closeWindow',
        //                 'scanQRCode',
        //                 'chooseWXPay',
        //                 'openProductSpecificView',
        //                 'addCard',
        //                 'chooseCard',
        //                 'openCard',
        //             ],
        //         })
        //         resolve()
        //     },
        // })

        // $.ajax({
        //     url: '//www.4dage.com/wechat/jssdk/share',
        //     type: 'get',
        //     data: {
        //         uri: location.href.split('#')[0],
        //         name: '厦门四维时代微信公众号',
        //     },
        //     dataType: 'jsonp',
        //     //jsonpCallback: "success_jsonp",
        //     success: function (data, textStatus) {
        //       console.log(data)
        //         wx.config({
        //             debug: false,
        //             appId: data.appId,
        //             timestamp: data.timestamp,
        //             nonceStr: data.nonceStr,
        //             signature: data.signature,
        //             jsApiList: [
        //                 'checkJsApi',
        //                 'onMenuShareTimeline',
        //                 'onMenuShareAppMessage',
        //                 'onMenuShareQQ',
        //                 'onMenuShareWeibo',
        //                 'hideMenuItems',
        //                 'showMenuItems',
        //                 'hideAllNonBaseMenuItem',
        //                 'showAllNonBaseMenuItem',
        //                 'translateVoice',
        //                 'startRecord',
        //                 'stopRecord',
        //                 'onRecordEnd',
        //                 'playVoice',
        //                 'pauseVoice',
        //                 'stopVoice',
        //                 'uploadVoice',
        //                 'downloadVoice',
        //                 'chooseImage',
        //                 'previewImage',
        //                 'uploadImage',
        //                 'downloadImage',
        //                 'getNetworkType',
        //                 'openLocation',
        //                 'getLocation',
        //                 'hideOptionMenu',
        //                 'showOptionMenu',
        //                 'closeWindow',
        //                 'scanQRCode',
        //                 'chooseWXPay',
        //                 'openProductSpecificView',
        //                 'addCard',
        //                 'chooseCard',
        //                 'openCard',
        //             ],
        //         })
        //         resolve()
        //     },
        //     error: function (XMLHttpRequest, textStatus, errorThrown) {
        //         reject('jsonp.error:' + textStatus)
        //     },
        // })
    })
}

function strToJSON(search) {
    let args = search.substr(1).split('&')
    let obj = {}
    args.forEach(arg => {
        let index = arg.indexOf('=')
        if (!~index) {
            obj[arg] = null
        } else {
            obj[arg.substr(0, index)] = arg.substr(index + 1)
        }
    })

    return obj
}

function jsonToStr(data) {
    let strs = []
    Object.keys(data).forEach(k => {
        if (data[k] !== null) {
            strs.push(`${k}=${data[k]}`)
        }
    })
    return '?' + strs.join('&')
}

function setup({ title, link, imgUrl, desc }) {
    let defaultFn = () => { }
    let defaultChar = ''
    let search = link.substr(link.indexOf('?'))
    let path = link.substr(0, link.indexOf('?'))
    let data = strToJSON(search)
    wx.ready(function () {
        // 微信朋友圈
        data.open = 'wx_friends'
        wx.onMenuShareTimeline({ title, link: path + jsonToStr(data), imgUrl, desc })
        // 微信好友
        data.open = 'wx_friend'
        wx.onMenuShareAppMessage({ title, desc, link: path + jsonToStr(data), imgUrl, type: defaultChar, dataUrl: defaultChar })
        // 微博
        data.open = 'weibo'
        wx.onMenuShareWeibo({ title, desc, link: path + jsonToStr(data), imgUrl, success: defaultFn, cancel: defaultFn })
        // 空间
        data.open = 'qq_zone'
        wx.onMenuShareQZone({ title, desc, link: path + jsonToStr(data), imgUrl, success: defaultFn, cancel: defaultFn })
        // QQ好友
        data.open = 'qq'
        wx.onMenuShareQQ({ title, desc, link: path + jsonToStr(data), imgUrl, success: defaultFn, cancel: defaultFn })

        wx.hideMenuItems({
            menuList: [
                'menuItem:copyUrl',
                'menuItem:openWithQQBrowser',
                'menuItem:openWithSafari',
                'menuItem:originPage',
            ]
        });
        wx.error(function (e) {
            console.log(e)
        })
    })
}
// // 封装JSONP方法
// function jsonp(options) {
//     // 创建一个script标签
//     var script = document.createElement('script')

//     // 随机生成一个函数名
//     /*   Math.random() 随机生成小数 0.123
//       toString() 转换为字符串
//       replace('.','') 把点替换 0123
//       最后随机生成的funName是 myJSONP0123 这种格式 */
//     var funName = 'myJSONP' + Math.random().toString().replace('.', '')

//     // 多个参数进行拼接
//     var param = ''
//     for (var arr in options.data) {
//         param += '&' + arr + '=' + options.data[arr]
//     }

//     // 把这个客户传过来的函数设置为全局函数
//     // . 后面不能跟变量，所以只能用[]
//     window[funName] = options.success

//     // 给script中的src属性赋值
//     script.src = options.url + '?callback=' + funName + param
//     // 放到body容器里面
//     document.body.appendChild(script)

//     // 等script标签加载完之后，清除标签
//     script.onload = function () {
//         document.body.removeChild(script)
//     }
// }

export default async args => {
    if (typeof wx != 'undefined' && browser.detectWeixin()) {
        // if (typeof wx != 'undefined') {
        //需要引入 https://res.wx.qq.com/open/js/jweixin-1.2.0.js
        !args.donotconfig && await toConfigure()
        setup(args)
    }
}

