Skip to content

Commit a097112

Browse files
committed
chore: tweak pager selected logic
1 parent 42e6ff6 commit a097112

1 file changed

Lines changed: 16 additions & 17 deletions

File tree

apps/mobile/src/modules/screen/PagerList.tsx

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { FeedViewType } from "@follow/constants"
22
import { useViewWithSubscription } from "@follow/store/subscription/hooks"
33
import { EventBus } from "@follow/utils/event-bus"
44
import * as Haptics from "expo-haptics"
5-
import { useEffect, useId, useMemo, useRef } from "react"
5+
import { useCallback, useEffect, useId, useMemo, useRef } from "react"
66
import type { StyleProp, ViewStyle } from "react-native"
77
import { StyleSheet, View } from "react-native"
88
import type {
@@ -18,6 +18,10 @@ import { PagerListVisibleContext, PagerListWillVisibleContext } from "./PagerLis
1818

1919
const AnimatedPagerView = Animated.createAnimatedComponent(PagerView)
2020

21+
const handlePageSelected = () => {
22+
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light)
23+
}
24+
2125
export 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({
116115
function 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

Comments
 (0)