bridge.js 2.1 KB
Newer Older
1
import {
2 3
  decode,
  encode
4 5
} from 'base64-arraybuffer'

fxy060608's avatar
fxy060608 已提交
6
export {
7
  pack,
fxy060608's avatar
fxy060608 已提交
8 9
  unpack,
  invoke
fxy060608's avatar
fxy060608 已提交
10 11
}
  from 'uni-core/service/bridge'
fxy060608's avatar
format  
fxy060608 已提交
12

fxy060608's avatar
fxy060608 已提交
13 14
export function requireNativePlugin (name) {
  return uni.requireNativePlugin(name)
fxy060608's avatar
fxy060608 已提交
15 16
}

fxy060608's avatar
fxy060608 已提交
17 18 19
/**
 * 触发 service 层,与 onMethod 对应
 */
fxy060608's avatar
fxy060608 已提交
20 21
export function publish (name, ...args) {
  return UniServiceJSBridge.emit('api.' + name, ...args)
fxy060608's avatar
fxy060608 已提交
22
}
23

24
export let lastStatusBarStyle
25 26

const oldSetStatusBarStyle = plus.navigator.setStatusBarStyle
27

fxy060608's avatar
fxy060608 已提交
28
export function newSetStatusBarStyle (style) {
29 30
  lastStatusBarStyle = style
  oldSetStatusBarStyle(style)
31 32 33
}

plus.navigator.setStatusBarStyle = newSetStatusBarStyle
fxy060608's avatar
fxy060608 已提交
34 35 36 37 38 39 40 41

export function setStatusBarStyle (statusBarStyle) {
  if (!statusBarStyle) {
    const pages = getCurrentPages()
    if (!pages.length) {
      return
    }
    statusBarStyle = pages[pages.length - 1].$page.meta.statusBarStyle
42 43 44 45 46 47
    if (!statusBarStyle || statusBarStyle === lastStatusBarStyle) {
      return
    }
  }
  if (statusBarStyle === lastStatusBarStyle) {
    return
fxy060608's avatar
fxy060608 已提交
48
  }
fxy060608's avatar
fxy060608 已提交
49 50 51 52
  if (process.env.NODE_ENV !== 'production') {
    console.log(`[uni-app] setStatusBarStyle`, statusBarStyle)
  }

53
  lastStatusBarStyle = statusBarStyle
fxy060608's avatar
fxy060608 已提交
54 55

  plus.navigator.setStatusBarStyle(statusBarStyle)
56 57
}

fxy060608's avatar
fxy060608 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
export function isTabBarPage (path = '') {
  if (!(__uniConfig.tabBar && Array.isArray(__uniConfig.tabBar.list))) {
    return false
  }
  try {
    if (!path) {
      const pages = getCurrentPages()
      if (!pages.length) {
        return false
      }
      const page = pages[pages.length - 1]
      if (!page) {
        return false
      }
      return page.$page.meta.isTabBar
73
    }
74
    const route = __uniRoutes.find(route => route.path.replace(/^\//, '') === path.replace(/^\//, ''))
75
    return route && route.meta.isTabBar
fxy060608's avatar
fxy060608 已提交
76 77 78 79 80 81
  } catch (e) {
    if (process.env.NODE_ENV !== 'production') {
      console.log('getCurrentPages is not ready')
    }
  }
  return false
82 83 84 85 86
}

export function base64ToArrayBuffer (data) {
  return decode(data)
}
87 88 89

export function arrayBufferToBase64 (data) {
  return encode(data)
fxy060608's avatar
fxy060608 已提交
90
}