import {
  publish
} from '../../bridge'

let onPushing

let isListening = false

let unsubscribe = false

export function subscribePush (params, callbackId) {
  const clientInfo = plus.push.getClientInfo()
  if (clientInfo) {
    if (!isListening) {
      isListening = true
      plus.push.addEventListener('receive', msg => {
        if (onPushing && !unsubscribe) {
          publish('onPushMessage', {
            messageId: msg.__UUID__,
            data: msg.payload,
            errMsg: 'onPush:ok'
          })
        }
      })
    }
    unsubscribe = false
    clientInfo.errMsg = 'subscribePush:ok'
    return clientInfo
  } else {
    return {
      errMsg: 'subscribePush:fail:请确保当前运行环境已包含 push 模块'
    }
  }
}

export function unsubscribePush (params) {
  unsubscribe = true
  return {
    errMsg: 'unsubscribePush:ok'
  }
}

export function onPush () {
  if (!isListening) {
    return {
      errMsg: 'onPush:fail:请先调用 uni.subscribePush'
    }
  }
  if (plus.push.getClientInfo()) {
    onPushing = true
    return {
      errMsg: 'onPush:ok'
    }
  }
  return {
    errMsg: 'onPush:fail:请确保当前运行环境已包含 push 模块'
  }
}

export function offPush (params) {
  onPushing = false
  return {
    errMsg: 'offPush:ok'
  }
}
