From b1cb4ef4de4095a589819bcf1e51b35f0460e3de Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 04:21:33 +0000 Subject: [PATCH] Fix on mobile --- src/view/com/util/List.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index e5ff2892cf..0a61463e09 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -1,6 +1,7 @@ import React, {useState} from 'react' import {FlatListProps} from 'react-native' import {FlatList_INTERNAL} from './Views' +import {runOnJS} from 'react-native-reanimated' import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' export type ListMethods = FlatList_INTERNAL @@ -17,13 +18,17 @@ function ListImpl( ) { const [isScrolledDown, setIsScrolledDown] = useState(false) + function handleScrolledDownChange(didScrollDown: boolean) { + setIsScrolledDown(didScrollDown) + onScrolledDownChange?.(didScrollDown) + } + // TODO: This ignores the passed-in onScroll completely. const scrollHandler = useAnimatedScrollHandler({ onScroll(e) { const didScrollDown = e.contentOffset.y > SCROLLED_DOWN_LIMIT if (isScrolledDown !== didScrollDown) { - setIsScrolledDown(didScrollDown) - onScrolledDownChange?.(didScrollDown) + runOnJS(handleScrolledDownChange)(didScrollDown) } }, })