'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import createCallbacks from 'uni-helpers/callbacks'
 
import {
  callPageHook
} from '../plugins/util'
 
export default function initSubscribe (subscribe, {
  getApp,
  getCurrentPages
}) {
  function createPageEvent (eventType) {
    return function (args, pageId) {
      pageId = parseInt(pageId)
      const pages = getCurrentPages()
      const page = pages.find(page => page.$page.id === pageId)
      if (page) {
        callPageHook(page, eventType, args)
      } else if (process.env.NODE_ENV !== 'production') {
        console.error(`Not Found:Page[${pageId}]`)
      }
    }
  }
 
  const requestComponentInfoCallbacks = createCallbacks('requestComponentInfo')
 
  function onRequestComponentInfo ({
    reqId,
    res
  }) {
    const callback = requestComponentInfoCallbacks.pop(reqId)
    if (callback) {
      callback(res)
    }
  }
 
  const requestComponentObserverCallbacks = createCallbacks('requestComponentObserver')
 
  function onRequestComponentObserver ({
    reqId,
    reqEnd,
    res
  }) {
    const callback = requestComponentObserverCallbacks.get(reqId)
    if (callback) {
      if (reqEnd) {
        requestComponentObserverCallbacks.pop(reqId)
        return
      }
      callback(res)
    }
  }
 
  const requestMediaQueryObserverCallbacks = createCallbacks('requestMediaQueryObserver')
 
  function onRequestMediaQueryObserver ({
    reqId,
    reqEnd,
    res
  }) {
    const callback = requestMediaQueryObserverCallbacks.get(reqId)
    if (callback) {
      if (reqEnd) {
        requestMediaQueryObserverCallbacks.pop(reqId)
        return
      }
      callback(res)
    }
  }
 
  if (__PLATFORM__ === 'h5') {
    subscribe('onPageReady', createPageEvent('onReady'))
  }
 
  subscribe('onPageScroll', createPageEvent('onPageScroll'))
  subscribe('onReachBottom', createPageEvent('onReachBottom'))
 
  subscribe('onRequestComponentInfo', onRequestComponentInfo)
  subscribe('onRequestComponentObserver', onRequestComponentObserver)
  subscribe('onRequestMediaQueryObserver', onRequestMediaQueryObserver)
}