diff options
Diffstat (limited to 'src/view/screens/ProfileFeed.tsx')
-rw-r--r-- | src/view/screens/ProfileFeed.tsx | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/src/view/screens/ProfileFeed.tsx b/src/view/screens/ProfileFeed.tsx index c1496e4ad..e1cc0e938 100644 --- a/src/view/screens/ProfileFeed.tsx +++ b/src/view/screens/ProfileFeed.tsx @@ -1,5 +1,11 @@ import React, {useMemo, useCallback} from 'react' -import {FlatList, StyleSheet, View, ActivityIndicator} from 'react-native' +import { + Dimensions, + StyleSheet, + View, + ActivityIndicator, + FlatList, +} from 'react-native' import {NativeStackScreenProps} from '@react-navigation/native-stack' import {useNavigation} from '@react-navigation/native' import {usePalette} from 'lib/hooks/usePalette' @@ -343,16 +349,19 @@ export const ProfileFeedScreenInner = observer( isHeaderReady={feedInfo?.hasLoaded ?? false} renderHeader={renderHeader} onCurrentPageSelected={onCurrentPageSelected}> - {({onScroll, headerHeight, isScrolledDown}) => ( + {({onScroll, headerHeight, isScrolledDown, scrollElRef}) => ( <FeedSection ref={feedSectionRef} feed={feed} onScroll={onScroll} headerHeight={headerHeight} isScrolledDown={isScrolledDown} + scrollElRef={ + scrollElRef as React.MutableRefObject<FlatList<any> | null> + } /> )} - {({onScroll, headerHeight}) => ( + {({onScroll, headerHeight, scrollElRef}) => ( <AboutSection feedOwnerDid={feedOwnerDid} feedRkey={rkey} @@ -360,6 +369,9 @@ export const ProfileFeedScreenInner = observer( headerHeight={headerHeight} onToggleLiked={onToggleLiked} onScroll={onScroll} + scrollElRef={ + scrollElRef as React.MutableRefObject<ScrollView | null> + } /> )} </PagerWithHeader> @@ -387,14 +399,14 @@ interface FeedSectionProps { onScroll: OnScrollHandler headerHeight: number isScrolledDown: boolean + scrollElRef: React.MutableRefObject<FlatList<any> | null> } const FeedSection = React.forwardRef<SectionRef, FeedSectionProps>( function FeedSectionImpl( - {feed, onScroll, headerHeight, isScrolledDown}, + {feed, onScroll, headerHeight, isScrolledDown, scrollElRef}, ref, ) { const hasNew = feed.hasNewLatest && !feed.isRefreshing - const scrollElRef = React.useRef<FlatList>(null) const onScrollToTop = useCallback(() => { scrollElRef.current?.scrollToOffset({offset: -headerHeight}) @@ -438,6 +450,7 @@ const AboutSection = observer(function AboutPageImpl({ headerHeight, onToggleLiked, onScroll, + scrollElRef, }: { feedOwnerDid: string feedRkey: string @@ -445,6 +458,7 @@ const AboutSection = observer(function AboutPageImpl({ headerHeight: number onToggleLiked: () => void onScroll: OnScrollHandler + scrollElRef: React.MutableRefObject<ScrollView | null> }) { const pal = usePalette('default') const {_} = useLingui() @@ -456,8 +470,12 @@ const AboutSection = observer(function AboutPageImpl({ return ( <ScrollView + ref={scrollElRef} scrollEventThrottle={1} - contentContainerStyle={{paddingTop: headerHeight}} + contentContainerStyle={{ + paddingTop: headerHeight, + paddingBottom: Dimensions.get('window').height - headerHeight, + }} onScroll={scrollHandler}> <View style={[ |