@@ -2,7 +2,7 @@ import type { FeedViewType } from "@follow/constants"
22import { useViewWithSubscription } from "@follow/store/subscription/hooks"
33import { EventBus } from "@follow/utils/event-bus"
44import * as Haptics from "expo-haptics"
5- import { useEffect , useId , useMemo , useRef } from "react"
5+ import { useCallback , useEffect , useId , useMemo , useRef } from "react"
66import type { StyleProp , ViewStyle } from "react-native"
77import { StyleSheet , View } from "react-native"
88import type {
@@ -18,6 +18,10 @@ import { PagerListVisibleContext, PagerListWillVisibleContext } from "./PagerLis
1818
1919const AnimatedPagerView = Animated . createAnimatedComponent ( PagerView )
2020
21+ const handlePageSelected = ( ) => {
22+ Haptics . impactAsync ( Haptics . ImpactFeedbackStyle . Light )
23+ }
24+
2125export function PagerList ( {
2226 renderItem,
2327 style,
@@ -47,29 +51,23 @@ export function PagerList({
4751 } )
4852 } , [ activeViews , pagerRef , rid ] )
4953
54+ const onPageSelectedJS = useCallback (
55+ ( view : FeedViewType ) => {
56+ selectTimeline ( { type : "view" , viewId : view } , rid )
57+ } ,
58+ [ rid ] ,
59+ )
60+
5061 const handlePageScroll = usePagerHandlers (
5162 {
5263 onPageScroll ( e : PagerViewOnPageScrollEventData ) {
5364 "worklet"
5465 const { position, offset } = e
5566 dragProgress . set ( offset + position )
5667 } ,
57- onPageScrollStateChanged ( e : PageScrollStateChangedNativeEventData ) {
58- "worklet"
59- const { pageScrollState } = e
60- if ( pageScrollState === "dragging" ) {
61- // setDragging(true)
62- } else if ( pageScrollState === "idle" ) {
63- // setDragging(false)
64- }
65-
66- if ( pageScrollState === "settling" ) {
67- runOnJS ( Haptics . impactAsync ) ( Haptics . ImpactFeedbackStyle . Light )
68- }
69- } ,
7068 onPageSelected ( e : PagerViewOnPageSelectedEventData ) {
7169 "worklet"
72- runOnJS ( selectTimeline ) ( { type : "view" , viewId : activeViews [ e . position ] ! } , rid )
70+ runOnJS ( onPageSelectedJS ) ( activeViews [ e . position ] ! )
7371 } ,
7472 } ,
7573 [ ] ,
@@ -85,6 +83,7 @@ export function PagerList({
8583 offscreenPageLimit = { 1 }
8684 overdrag
8785 onPageScroll = { handlePageScroll }
86+ onPageSelected = { handlePageSelected }
8887 orientation = "horizontal"
8988 >
9089 { useMemo (
@@ -116,7 +115,7 @@ export function PagerList({
116115function usePagerHandlers (
117116 handlers : {
118117 onPageScroll : ( e : PagerViewOnPageScrollEventData ) => void
119- onPageScrollStateChanged : ( e : PageScrollStateChangedNativeEventData ) => void
118+ onPageScrollStateChanged ? : ( e : PageScrollStateChangedNativeEventData ) => void
120119 onPageSelected ?: ( e : PagerViewOnPageSelectedEventData ) => void
121120 } ,
122121 dependencies : unknown [ ] ,
@@ -130,7 +129,7 @@ function usePagerHandlers(
130129 if ( event . eventName . endsWith ( "onPageScroll" ) ) {
131130 onPageScroll ( event as any as PagerViewOnPageScrollEventData )
132131 } else if ( event . eventName . endsWith ( "onPageScrollStateChanged" ) ) {
133- onPageScrollStateChanged ( event as any as PageScrollStateChangedNativeEventData )
132+ onPageScrollStateChanged ?. ( event as any as PageScrollStateChangedNativeEventData )
134133 } else if ( event . eventName . endsWith ( "onPageSelected" ) ) {
135134 onPageSelected ?.( event as any as PagerViewOnPageSelectedEventData )
136135 }
0 commit comments