Fix bottom space on feeds (#2081)
* Fix bottom space on feeds * Translate * Handle web better
This commit is contained in:
parent
6e2eaa746d
commit
4f171be9bf
8 changed files with 213 additions and 166 deletions
|
@ -26,6 +26,7 @@ import {
|
|||
pollLatest,
|
||||
} from '#/state/queries/post-feed'
|
||||
import {useModerationOpts} from '#/state/queries/preferences'
|
||||
import {isWeb} from '#/platform/detection'
|
||||
|
||||
const LOADING_ITEM = {_reactKey: '__loading__'}
|
||||
const EMPTY_FEED_ITEM = {_reactKey: '__empty__'}
|
||||
|
@ -216,19 +217,25 @@ let Feed = ({
|
|||
|
||||
const shouldRenderEndOfFeed =
|
||||
!hasNextPage && !isEmpty && !isFetching && !isError && !!renderEndOfFeed
|
||||
const FeedFooter = React.useCallback(
|
||||
() =>
|
||||
isFetchingNextPage ? (
|
||||
<View style={styles.feedFooter}>
|
||||
<ActivityIndicator />
|
||||
</View>
|
||||
) : shouldRenderEndOfFeed ? (
|
||||
renderEndOfFeed()
|
||||
) : (
|
||||
<View />
|
||||
),
|
||||
[isFetchingNextPage, shouldRenderEndOfFeed, renderEndOfFeed],
|
||||
)
|
||||
const FeedFooter = React.useCallback(() => {
|
||||
/**
|
||||
* A bit of padding at the bottom of the feed as you scroll and when you
|
||||
* reach the end, so that content isn't cut off by the bottom of the
|
||||
* screen.
|
||||
*/
|
||||
const offset = Math.max(headerOffset, 32) * (isWeb ? 1 : 2)
|
||||
|
||||
return isFetchingNextPage ? (
|
||||
<View style={[styles.feedFooter]}>
|
||||
<ActivityIndicator />
|
||||
<View style={{height: offset}} />
|
||||
</View>
|
||||
) : shouldRenderEndOfFeed ? (
|
||||
<View style={{minHeight: offset}}>{renderEndOfFeed()}</View>
|
||||
) : (
|
||||
<View style={{height: offset}} />
|
||||
)
|
||||
}, [isFetchingNextPage, shouldRenderEndOfFeed, renderEndOfFeed, headerOffset])
|
||||
|
||||
const scrollHandler = useAnimatedScrollHandler(onScroll || {})
|
||||
return (
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React from 'react'
|
||||
import {StyleSheet, View} from 'react-native'
|
||||
import {StyleSheet, View, Dimensions} from 'react-native'
|
||||
import {useNavigation} from '@react-navigation/native'
|
||||
import {
|
||||
FontAwesomeIcon,
|
||||
|
@ -36,7 +36,12 @@ export function FollowingEndOfFeed() {
|
|||
}, [navigation])
|
||||
|
||||
return (
|
||||
<View style={[styles.container, pal.border]}>
|
||||
<View
|
||||
style={[
|
||||
styles.container,
|
||||
pal.border,
|
||||
{minHeight: Dimensions.get('window').height * 0.75},
|
||||
]}>
|
||||
<View style={styles.inner}>
|
||||
<Text type="xl-medium" style={[s.textCenter, pal.text]}>
|
||||
You've reached the end of your feed! Find some more accounts to
|
||||
|
|
|
@ -2,7 +2,7 @@ import React, {useMemo} from 'react'
|
|||
import {StyleSheet, View} from 'react-native'
|
||||
import {useFocusEffect} from '@react-navigation/native'
|
||||
import {AppBskyActorDefs, moderateProfile, ModerationOpts} from '@atproto/api'
|
||||
import {msg} from '@lingui/macro'
|
||||
import {msg, Trans} from '@lingui/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types'
|
||||
import {CenteredView, FlatList} from '../com/util/Views'
|
||||
|
@ -36,6 +36,8 @@ import {useQueryClient} from '@tanstack/react-query'
|
|||
import {useComposerControls} from '#/state/shell/composer'
|
||||
import {listenSoftReset} from '#/state/events'
|
||||
import {truncateAndInvalidate} from '#/state/queries/util'
|
||||
import {Text} from '#/view/com/util/text/Text'
|
||||
import {usePalette} from 'lib/hooks/usePalette'
|
||||
|
||||
interface SectionRef {
|
||||
scrollToTop: () => void
|
||||
|
@ -429,6 +431,7 @@ const FeedSection = React.forwardRef<SectionRef, FeedSectionProps>(
|
|||
scrollEventThrottle={1}
|
||||
renderEmptyState={renderPostsEmpty}
|
||||
headerOffset={headerHeight}
|
||||
renderEndOfFeed={ProfileEndOfFeed}
|
||||
/>
|
||||
{(isScrolledDown || hasNew) && (
|
||||
<LoadLatestBtn
|
||||
|
@ -442,6 +445,18 @@ const FeedSection = React.forwardRef<SectionRef, FeedSectionProps>(
|
|||
},
|
||||
)
|
||||
|
||||
function ProfileEndOfFeed() {
|
||||
const pal = usePalette('default')
|
||||
|
||||
return (
|
||||
<View style={[pal.border, {paddingTop: 32, borderTopWidth: 1}]}>
|
||||
<Text style={[pal.textLight, pal.border, {textAlign: 'center'}]}>
|
||||
<Trans>End of feed</Trans>
|
||||
</Text>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flexDirection: 'column',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue