on.js 2.5 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3 4 5 6 7
import {
  callAppHook,
  callPageHook
} from '../plugins/util'

import {
  setPullDownRefreshPageId
fxy060608's avatar
fxy060608 已提交
8
} from 'uni-platform/service/api/ui/pull-down-refresh'
fxy060608's avatar
fxy060608 已提交
9

fxy060608's avatar
fxy060608 已提交
10 11 12
export default function initOn (on, {
  getApp,
  getCurrentPages
fxy060608's avatar
fxy060608 已提交
13
}) {
fxy060608's avatar
fxy060608 已提交
14 15
  function onError (err) {
    callAppHook(getApp(), 'onError', err)
fxy060608's avatar
fxy060608 已提交
16 17
  }

fxy060608's avatar
fxy060608 已提交
18 19
  function onPageNotFound (page) {
    callAppHook(getApp(), 'onPageNotFound', page)
fxy060608's avatar
fxy060608 已提交
20 21
  }

fxy060608's avatar
fxy060608 已提交
22 23
  function onResize (args, pageId) {
    const page = getCurrentPages().find(page => page.$page.id === pageId)
fxy060608's avatar
fxy060608 已提交
24
    page && callPageHook(page, 'onResize', args)
fxy060608's avatar
fxy060608 已提交
25 26
  }

fxy060608's avatar
fxy060608 已提交
27 28 29 30 31 32
  function onPullDownRefresh (args, pageId) {
    const page = getCurrentPages().find(page => page.$page.id === pageId)
    if (page) {
      setPullDownRefreshPageId(pageId)
      callPageHook(page, 'onPullDownRefresh')
    }
fxy060608's avatar
fxy060608 已提交
33
  }
fxy060608's avatar
fxy060608 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

  function callCurrentPageHook (hook, args) {
    const pages = getCurrentPages()
    if (pages.length) {
      callPageHook(pages[pages.length - 1], hook, args)
    }
  }

  function createCallCurrentPageHook (hook) {
    return function (args) {
      callCurrentPageHook(hook, args)
    }
  }

  function onAppEnterBackground () {
    callAppHook(getApp(), 'onHide')
    callCurrentPageHook('onHide')
  }

  function onAppEnterForeground () {
    callAppHook(getApp(), 'onShow')
    callCurrentPageHook('onShow')
  }

  const routeHooks = {
    navigateTo () {
      callCurrentPageHook('onHide')
    },
    navigateBack () {
      callCurrentPageHook('onShow')
    }
  }

  function onAppRoute ({
    type
  }) {
    const routeHook = routeHooks[type]
    routeHook && routeHook()
fxy060608's avatar
fxy060608 已提交
72 73
  }

fxy060608's avatar
fxy060608 已提交
74 75 76
  on('onError', onError)
  on('onPageNotFound', onPageNotFound)

fxy060608's avatar
fxy060608 已提交
77 78 79 80
  if (__PLATFORM__ !== 'h5') { // 后续有时间,h5 平台也要迁移到 onAppRoute
    on('onAppRoute', onAppRoute)
  }

fxy060608's avatar
fxy060608 已提交
81 82 83
  on('onAppEnterBackground', onAppEnterBackground)
  on('onAppEnterForeground', onAppEnterForeground)

fxy060608's avatar
fxy060608 已提交
84
  on('onResize', onResize)
fxy060608's avatar
fxy060608 已提交
85 86 87 88
  on('onPullDownRefresh', onPullDownRefresh)

  on('onTabItemTap', createCallCurrentPageHook('onTabItemTap'))
  on('onNavigationBarButtonTap', createCallCurrentPageHook('onNavigationBarButtonTap'))
fxy060608's avatar
fxy060608 已提交
89

Q
qiang 已提交
90 91
  on('onNavigationBarSearchInputChanged', createCallCurrentPageHook('onNavigationBarSearchInputChanged'))
  on('onNavigationBarSearchInputConfirmed', createCallCurrentPageHook('onNavigationBarSearchInputConfirmed'))
fxy060608's avatar
fxy060608 已提交
92
  on('onNavigationBarSearchInputClicked', createCallCurrentPageHook('onNavigationBarSearchInputClicked'))
fxy060608's avatar
fxy060608 已提交
93
}