diff --git a/src/view/com/feeds/ProfileFeedgens.tsx b/src/view/com/feeds/ProfileFeedgens.tsx
index 693a8e361a..64705ded8e 100644
--- a/src/view/com/feeds/ProfileFeedgens.tsx
+++ b/src/view/com/feeds/ProfileFeedgens.tsx
@@ -1,8 +1,10 @@
import React from 'react'
import {
+ ActivityIndicator,
findNodeHandle,
ListRenderItemInfo,
StyleProp,
+ StyleSheet,
View,
ViewStyle,
} from 'react-native'
@@ -10,6 +12,7 @@ import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger'
import {isNative, isWeb} from '#/platform/detection'
@@ -57,6 +60,7 @@ export const ProfileFeedgens = React.forwardRef<
data,
isFetching,
isFetched,
+ isFetchingNextPage,
hasNextPage,
fetchNextPage,
isError,
@@ -65,6 +69,7 @@ export const ProfileFeedgens = React.forwardRef<
} = useProfileFeedgensQuery(did, opts)
const isEmpty = !isFetching && !data?.pages[0]?.feeds.length
const {data: preferences} = usePreferencesQuery()
+ const {isMobile} = useWebMediaQueries()
const items = React.useMemo(() => {
let items: any[] = []
@@ -180,6 +185,12 @@ export const ProfileFeedgens = React.forwardRef<
}
}, [enabled, scrollElRef, setScrollViewTag])
+ const ProfileFeedgensFooter = React.useCallback(() => {
+ return isFetchingNextPage ? (
+
+ ) : null
+ }, [isFetchingNextPage])
+
return (
item._reactKey || item.uri}
renderItem={renderItem}
+ ListFooterComponent={ProfileFeedgensFooter}
refreshing={isPTRing}
onRefresh={onRefresh}
headerOffset={headerOffset}
progressViewOffset={ios(0)}
- contentContainerStyle={isNative && {paddingBottom: headerOffset + 100}}
+ contentContainerStyle={isMobile && {paddingBottom: headerOffset + 100}}
indicatorStyle={t.name === 'light' ? 'black' : 'white'}
removeClippedSubviews={true}
// @ts-ignore our .web version only -prf
@@ -202,3 +214,7 @@ export const ProfileFeedgens = React.forwardRef<
)
})
+
+const styles = StyleSheet.create({
+ footer: {paddingTop: 20},
+})
diff --git a/src/view/com/lists/ProfileLists.tsx b/src/view/com/lists/ProfileLists.tsx
index 27b7f94df8..2f63fd172b 100644
--- a/src/view/com/lists/ProfileLists.tsx
+++ b/src/view/com/lists/ProfileLists.tsx
@@ -1,8 +1,10 @@
import React from 'react'
import {
+ ActivityIndicator,
findNodeHandle,
ListRenderItemInfo,
StyleProp,
+ StyleSheet,
View,
ViewStyle,
} from 'react-native'
@@ -10,6 +12,7 @@ import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger'
import {isNative, isWeb} from '#/platform/detection'
@@ -56,10 +59,12 @@ export const ProfileLists = React.forwardRef(
isFetched,
hasNextPage,
fetchNextPage,
+ isFetchingNextPage,
isError,
error,
refetch,
} = useProfileListsQuery(did, opts)
+ const {isMobile} = useWebMediaQueries()
const isEmpty = !isFetching && !data?.pages[0]?.lists.length
const items = React.useMemo(() => {
@@ -176,6 +181,12 @@ export const ProfileLists = React.forwardRef(
}
}, [enabled, scrollElRef, setScrollViewTag])
+ const ProfileListsFooter = React.useCallback(() => {
+ return isFetchingNextPage ? (
+
+ ) : null
+ }, [isFetchingNextPage])
+
return (
(
data={items}
keyExtractor={(item: any) => item._reactKey || item.uri}
renderItem={renderItemInner}
+ ListFooterComponent={ProfileListsFooter}
refreshing={isPTRing}
onRefresh={onRefresh}
headerOffset={headerOffset}
progressViewOffset={ios(0)}
contentContainerStyle={
- isNative && {paddingBottom: headerOffset + 100}
+ isMobile && {paddingBottom: headerOffset + 100}
}
indicatorStyle={t.name === 'light' ? 'black' : 'white'}
removeClippedSubviews={true}
@@ -201,3 +213,7 @@ export const ProfileLists = React.forwardRef(
)
},
)
+
+const styles = StyleSheet.create({
+ footer: {paddingTop: 20},
+})
diff --git a/src/view/com/util/List.web.tsx b/src/view/com/util/List.web.tsx
index d9a2e351e1..f112d2d0a4 100644
--- a/src/view/com/util/List.web.tsx
+++ b/src/view/com/util/List.web.tsx
@@ -46,9 +46,9 @@ function ListImpl(
keyExtractor,
refreshing: _unsupportedRefreshing,
onStartReached,
- onStartReachedThreshold = 0,
+ onStartReachedThreshold = 2,
onEndReached,
- onEndReachedThreshold = 0,
+ onEndReachedThreshold = 2,
onRefresh: _unsupportedOnRefresh,
onScrolledDownChange,
onContentSizeChange,