on.js 1.4 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 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
import {
  callAppHook,
  callPageHook
} from '../plugins/util'

import {
  setPullDownRefreshPageId
} from '../api/page-event'

function onError (err) {
  callAppHook(getApp(), 'onError', err)
}

function onPageNotFound (page) {
  callAppHook(getApp(), 'onPageNotFound', page)
}

function onPullDownRefresh (args, pageId) {
  const page = getCurrentPages().find(page => page.$page.id === pageId)
  if (page) {
    setPullDownRefreshPageId(pageId)
    callPageHook(page, 'onPullDownRefresh')
  }
}

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')
}

export default function initOn (on) {
  on('onError', onError)
  on('onPageNotFound', onPageNotFound)

  on('onAppEnterBackground', onAppEnterBackground)
  on('onAppEnterForeground', onAppEnterForeground)

  on('onPullDownRefresh', onPullDownRefresh)

  on('onTabItemTap', createCallCurrentPageHook('onTabItemTap'))
  on('onNavigationBarButtonTap', createCallCurrentPageHook('onNavigationBarButtonTap'))
}