diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-05-24 18:46:27 -0500 |
---|---|---|
committer | Paul Frazee <pfrazee@gmail.com> | 2023-05-24 18:46:27 -0500 |
commit | 4e1876fe85ab3a70eba50466a62bff8a9d01c16c (patch) | |
tree | 1d58eb7716587566c4eb1bae15ccbaf32240c075 /src/view/screens/Home.tsx | |
parent | 9673225f78f656038b2db11062d8e397c81568bf (diff) | |
download | voidsky-4e1876fe85ab3a70eba50466a62bff8a9d01c16c.tar.zst |
Refactor the scroll-to-top UX
Diffstat (limited to 'src/view/screens/Home.tsx')
-rw-r--r-- | src/view/screens/Home.tsx | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx index 4fe175fc1..bd800590d 100644 --- a/src/view/screens/Home.tsx +++ b/src/view/screens/Home.tsx @@ -150,7 +150,8 @@ const FeedPage = observer( renderEmptyState?: () => JSX.Element }) => { const store = useStores() - const onMainScroll = useOnMainScroll(store) + const [onMainScroll, isScrolledDown, resetMainScroll] = + useOnMainScroll(store) const {screen, track} = useAnalytics() const scrollElRef = React.useRef<FlatList>(null) const {appState} = useAppState({ @@ -178,12 +179,13 @@ const FeedPage = observer( const scrollToTop = React.useCallback(() => { scrollElRef.current?.scrollToOffset({offset: -HEADER_OFFSET}) - }, [scrollElRef]) + resetMainScroll() + }, [scrollElRef, resetMainScroll]) const onSoftReset = React.useCallback(() => { if (isPageFocused) { - feed.refresh() scrollToTop() + feed.refresh() } }, [isPageFocused, scrollToTop, feed]) @@ -254,10 +256,11 @@ const FeedPage = observer( showPostFollowBtn onPressTryAgain={onPressTryAgain} onScroll={onMainScroll} + scrollEventThrottle={100} renderEmptyState={renderEmptyState} headerOffset={HEADER_OFFSET} /> - {feed.hasNewLatest && !feed.isRefreshing && ( + {isScrolledDown && ( <LoadLatestBtn onPress={onPressLoadLatest} label="Load new posts" /> )} <FAB |