get-provider.js 2.4 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3
import {
  invoke
} from '../../bridge'
4
import { isFn, isPlainObject } from 'uni-shared'
fxy060608's avatar
fxy060608 已提交
5 6

const providers = {
fxy060608's avatar
fxy060608 已提交
7
  oauth (callback) {
fxy060608's avatar
fxy060608 已提交
8 9 10 11 12 13 14
    plus.oauth.getServices(services => {
      const provider = []
      services.forEach(({
        id
      }) => {
        provider.push(id)
      })
15
      callback(null, provider, services)
fxy060608's avatar
fxy060608 已提交
16 17 18 19
    }, err => {
      callback(err)
    })
  },
fxy060608's avatar
fxy060608 已提交
20
  share (callback) {
fxy060608's avatar
fxy060608 已提交
21 22 23 24 25 26 27
    plus.share.getServices(services => {
      const provider = []
      services.forEach(({
        id
      }) => {
        provider.push(id)
      })
28
      callback(null, provider, services)
fxy060608's avatar
fxy060608 已提交
29 30 31 32
    }, err => {
      callback(err)
    })
  },
fxy060608's avatar
fxy060608 已提交
33
  payment (callback) {
fxy060608's avatar
fxy060608 已提交
34 35 36 37 38 39 40
    plus.payment.getChannels(services => {
      const provider = []
      services.forEach(({
        id
      }) => {
        provider.push(id)
      })
41
      callback(null, provider, services)
fxy060608's avatar
fxy060608 已提交
42 43 44 45
    }, err => {
      callback(err)
    })
  },
fxy060608's avatar
fxy060608 已提交
46
  push (callback) {
fxy060608's avatar
fxy060608 已提交
47
    if (typeof weex !== 'undefined' || typeof plus !== 'undefined') {
48 49
      const clientInfo = plus.push.getClientInfo()
      callback(null, [clientInfo.id], [clientInfo])
fxy060608's avatar
fxy060608 已提交
50 51 52 53 54 55
    } else {
      callback(null, [])
    }
  }
}

fxy060608's avatar
fxy060608 已提交
56
export function getProvider ({
fxy060608's avatar
fxy060608 已提交
57 58 59
  service
}, callbackId) {
  if (providers[service]) {
60
    providers[service]((err, provider, providers) => {
fxy060608's avatar
fxy060608 已提交
61 62
      if (err) {
        invoke(callbackId, {
63
          errMsg: 'getProvider:fail ' + err.message
fxy060608's avatar
fxy060608 已提交
64 65 66 67 68
        })
      } else {
        invoke(callbackId, {
          errMsg: 'getProvider:ok',
          service,
69 70 71 72 73 74 75
          provider,
          providers: providers.map((provider) => {
            const returnProvider = {}
            if (isPlainObject(provider)) {
              for (const key in provider) {
                if (Object.hasOwnProperty.call(provider, key)) {
                  const item = provider[key]
76
                  if (typeof item !== 'undefined') {
77 78 79 80 81
                    const _key =
                      key === 'nativeClient' || key === 'serviceReady'
                        ? 'isAppExist'
                        : key
                    returnProvider[_key] = item
82 83 84 85 86 87
                  }
                }
              }
            }
            return returnProvider
          })
fxy060608's avatar
fxy060608 已提交
88 89 90 91 92
        })
      }
    })
  } else {
    invoke(callbackId, {
Q
qiang 已提交
93
      errMsg: 'getProvider:fail service not found'
fxy060608's avatar
fxy060608 已提交
94 95 96
    })
  }
}