Source: qianxiang_h5/plus.js

'use strict';

/* 钱香借款端app相关 */
/**
 * @module qianxiang_h5.plus
 * @description 请在whale.plus模块内调用
 */

import {isFunction} from '../lib/utils';
import {appShareCache, basicShareConfig} from './share';


/*用于钱香app网页*/

window.QxAppDomain = window.QxApi || window; // 安卓是QxApi ios是window域

const userEventMap = {
    EVENT_QX_INFO: 'EVENT_QX_INFO', // 获取到了app info 事件
    EVENT_QX_TOKEN: 'EVENT_QX_TOKEN' // 获取到了token事件
};

function getJSON(str) {
    let json = null;
    try {
        json = JSON.parse(str);
    } catch (e) {
        console.log('getJSON: 参数错误' + str);
    }
    return json;
}

function bindOneListener(userEventName, callback) {
    let  handle = function (e) {
        let data = e.detail;
        if (isFunction(callback)) {
            callback(data);
        }
        window.removeEventListener(userEventName, handle);
    };
    window.addEventListener(userEventName, handle);
}

/**
 * 获取app信息
 * @param {Function} callback 回调函数(接收参数info如下表)
 * @property {String} info.OSName 系统名
 * @property {String} info.OSVersion 系统版本
 * @property {String} info.APPVersion app版本
 * @property {String} info.DeviceType 设备类型
 * @example
 * if(window.getQxApiInfo){
        window.getQxApiInfo(function(data){
            console.log(data);
            //输出 "{'OSName':'IOS','OSVersion':'9.3','APPVersion':'1.1.7','DeviceType':'huawei G3'}"
        });
    }
 */
function getQxAppInfo(callback) {
    bindOneListener(userEventMap.EVENT_QX_INFO, callback);
    QxAppDomain.getQxAppInfo && QxAppDomain.getQxAppInfo();
}

/**
 * 获取app token
 * @param {Function} callback  回调函数(接收参数token如下表)
 * @property {String} info token信息
 * @example
 * if(window.getQxToken){
        window.getQxToken(function(token){
            console.log(token);
            //输出 "tresssdwrtdfdgghrr"
        });
    }
 */
function getQxToken(callback) {
    bindOneListener(userEventMap.EVENT_QX_TOKEN, callback);
    QxAppDomain.getQxToken && QxAppDomain.getQxToken();
}

/**
 * 跳转到app页面
 * @param {String} pageCode  页面id
 * @wiki https://www.tapd.cn/23280401/markdown_wikis/view/#1123280401001000101
 */
function jumpToAppPage(pageCode) {
    QxAppDomain.jumpToAppPage && QxAppDomain.jumpToAppPage(pageCode);
}

/**
 * 设置页面标题
 * @param {String} title  页面id
 */
function setPageTitle(title = '') {
    QxAppDomain.setPageTitle && QxAppDomain.setPageTitle(title);
}

//回调
window.QxAppInfoCallback = function (str) {
    if (str) {
        // 这个暂时先不用了。
    }
};

//回调
window.QxBridgeGetContent = function (flag) {
    if (flag == 'fx') {
        // 分享
        if (appShareCache) {
            QxAppDomain.showSharePanel(
                appShareCache.title,
                appShareCache.desc,
                appShareCache.link,
                appShareCache.imgUrl);
        } else {
            QxAppDomain.showSharePanel(
                basicShareConfig.title,
                basicShareConfig.desc,
                basicShareConfig.link,
                basicShareConfig.imgUrl);
        }
    }
};

// 2.4.5 之后安卓调用js都放在这个域下
window.QX_AppCallback = {
    back_getQxToken: function (str) {
        window.dispatchEvent(new CustomEvent(userEventMap.EVENT_QX_TOKEN, {'detail': str}));
    },
    back_getQxAppInfo: function (str) {
        let json = getJSON(str);
        window.dispatchEvent(new CustomEvent(userEventMap.EVENT_QX_INFO, {'detail': json}));
    }
};

export {
    getQxAppInfo,
    getQxToken,
    jumpToAppPage,
    setPageTitle
};