From e2706f37ba0bb56d18c0da874e0a656bd0a29f91 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Fri, 13 Oct 2023 20:44:49 +0100 Subject: [PATCH] Track progress in a shared value --- src/view/screens/Home.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx index bd29729d82..de46eb5e3b 100644 --- a/src/view/screens/Home.tsx +++ b/src/view/screens/Home.tsx @@ -1,6 +1,7 @@ import React from 'react' import {useWindowDimensions} from 'react-native' import {useFocusEffect} from '@react-navigation/native' +import {useSharedValue} from 'react-native-reanimated' import {AppBskyFeedGetFeed as GetCustomFeed} from '@atproto/api' import {observer} from 'mobx-react-lite' import isEqual from 'lodash.isequal' @@ -28,6 +29,7 @@ export const HomeScreen = withAuthRequired( const [requestedCustomFeeds, setRequestedCustomFeeds] = React.useState< string[] >([]) + const dragProgress = useSharedValue(selectedPage) React.useEffect(() => { const {pinned} = store.me.savedFeeds @@ -79,6 +81,12 @@ export const HomeScreen = withAuthRequired( [store, setSelectedPage], ) + const onPageScroll = React.useCallback((e) => { + 'worklet' + const progress = (e.offset + e.position) / customFeeds.length; + dragProgress.value = progress; + }, [customFeeds]) + const onPressSelected = React.useCallback(() => { store.emitScreenSoftReset() }, [store]) @@ -111,11 +119,7 @@ export const HomeScreen = withAuthRequired( ref={pagerRef} testID="homeScreen" onPageSelected={onPageSelected} - onPageScroll={(e) => { - 'worklet' - const progress = (e.offset + e.position) / customFeeds.length; - console.log(progress) - }} + onPageScroll={onPageScroll} renderTabBar={renderTabBar} tabBarPosition="top">