diff --git a/src/view/com/pager/Pager.tsx b/src/view/com/pager/Pager.tsx
index 8cc3469032..5eb7d76089 100644
--- a/src/view/com/pager/Pager.tsx
+++ b/src/view/com/pager/Pager.tsx
@@ -1,7 +1,9 @@
import {
+ memo,
useCallback,
useContext,
useImperativeHandle,
+ useMemo,
useRef,
useState,
} from 'react'
@@ -56,6 +58,7 @@ interface Props {
}
const AnimatedPagerView = Animated.createAnimatedComponent(PagerView)
+const MemoizedAnimatedPagerView = memo(AnimatedPagerView)
export function Pager({
ref,
@@ -139,10 +142,6 @@ export function Pager({
[parentOnPageScrollStateChanged],
)
- const drawerGesture = useContext(DrawerGestureContext) ?? Gesture.Native() // noop for web
- const nativeGesture =
- Gesture.Native().requireExternalGestureToFail(drawerGesture)
-
return (
{renderTabBar({
@@ -151,19 +150,33 @@ export function Pager({
dragProgress,
dragState,
})}
-
-
+
{children}
-
-
+
+
)
}
+function DrawerGestureRequireFail({children}: {children: React.ReactNode}) {
+ const drawerGesture = useContext(DrawerGestureContext)
+
+ const nativeGesture = useMemo(() => {
+ const gesture = Gesture.Native()
+ if (drawerGesture) {
+ gesture.requireExternalGestureToFail(drawerGesture)
+ }
+ return gesture
+ }, [drawerGesture])
+
+ return {children}
+}
+
function usePagerHandlers(
handlers: {
onPageScroll: (e: PagerViewOnPageScrollEventData) => void