/* global AndroidWebViewBridge */
export default function SendMessageToApp() {
  let messageName = "nullName"
  let params = ""
  let callback

  //app定义的的方法名
  if (typeof arguments[0] == "string") {
    messageName = arguments[0]
  }

  //传递的参数或者回调函数
  let arg1 = arguments[1]
  if (typeof arg1 == "function") {
    callback = arg1
  } else if (typeof arg1 != "undefined") {
    params = arg1
  }

  //回调函数
  if (typeof arguments[2] == "function") {
    callback = arguments[2]
  }

  if (callback) {
    let fun_name = getFunName(callback)
    window[fun_name] = callback
  }

  if (window.webkit !== undefined) {
    sendToIOS(messageName, params)
  } else {
    //貌似安卓传的参数，不能是数组和对象，所以这里json一下
    if (typeof params != "string") {
      params = JSON.stringify(params)
    }
    sendToAndroid(messageName, params)
  }
}

function sendToIOS(messageName, params) {
  window.webkit.messageHandlers[messageName].postMessage(params)
}

function sendToAndroid(messageName, params) {
  try {
    if (params.length > 0) {
      console.log("有参")
      AndroidWebViewBridge[messageName](params)
    } else {
      console.log("无参")
      AndroidWebViewBridge[messageName]()
    }
  } catch (error) {
    console.log(error)
  }
}

function getFunName(fn) {
  let res = fn.name.split(" ")
  if (res.length > 1) {
    return res[1]
  } else if (res.length > 0) {
    return res[0]
  }
}
