All files / mp usePullDownRefresh.ts

0% Statements 0/9
0% Branches 0/2
0% Functions 0/5
0% Lines 0/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22                                           
import { ensureInMiniProgram } from './ensureInMiniProgram'
import { isPromiseLike } from '../utils'
import { miniProgramBus } from './miniProgramBus'
import { useEffect } from 'react'
import { useLatest } from '../react'
 
export function usePullDownRefresh(callback: () => any): void {
  const latestCallback = useLatest(callback)
  useEffect(() => {
    return miniProgramBus.on('currentPagePullDownRefresh', () => {
      ensureInMiniProgram(mp => {
        const res = latestCallback.current()
        if (isPromiseLike(res)) {
          res.then(() => mp.stopPullDownRefresh())
        } else {
          mp.stopPullDownRefresh()
        }
      })
    })
  }, [])
}