/**
 * jeepay组件工具包
 *
 * @author terrfly
 * @site https://www.jeepay.vip
 * @date 2021/6/2 16:04
 */

/* 支付接口克隆，调用三方接口时ifCode处理
    传入原始或克隆 ifCode或ifCode_1
    返回的是  原始ifCode */
export function getOriginIfCode(cloneIfCode) {
    if (cloneIfCode && cloneIfCode.indexOf('_') > 0) {
        return cloneIfCode.split('_')[0]
    }

    return cloneIfCode
}


/** 
 * 三个系统： 定义ant model类型的点击取消按钮的回调函数
 * 支持： 自动关闭（默认）， 用户手动调用函数关闭（不包含蒙层）
 * 返回结果： { closeFunc: 关闭函数 , triggerCancel: 是否蒙层关闭 }  
 * 
 * 原理： 
 * antdv 约定： 当点击蒙层关闭： 返回数据为：  {triggerCancel: true} ,  点击按钮关闭时： 返回 关闭func 
 * 如果extConfig 包含： { isCatchFuncClose ：true }, 那么会手动关闭，  需要开发者自行调用关闭函数（ 仅按钮关闭时, 因为蒙层无法手动控制 ）
 * **/
export function modelConfirmPromiseRejectFunc(antCloseFuncOrMsg, extConfig, reject){

    // 是否手动关闭 （ 不自动调用关闭接口， 会返回给reject去调用支持异步 ）
    let isCatchFuncClose = false
    if(extConfig && extConfig.isCatchFuncClose){
        isCatchFuncClose = true
    }

    // 定义reject 返回的对象 
    let rejectResult = { closeFunc: typeof(antCloseFuncOrMsg) == 'function' ? antCloseFuncOrMsg : () => {}, triggerCancel: false }

    // 当前是否是蒙层关闭的
    if(typeof antCloseFuncOrMsg == 'object' && antCloseFuncOrMsg.triggerCancel){
        rejectResult.triggerCancel = true
        return reject(rejectResult)
    }
    
    // 自动关闭 
    if(!isCatchFuncClose){
        rejectResult.closeFunc()
    }

    return reject(rejectResult)

}


