Use skeleton states for refetch on focus

This commit is contained in:
Eric Bailey
2025-04-07 10:38:39 -05:00
parent 67c79dd8ba
commit b25aa7eda8
3 changed files with 16 additions and 7 deletions
+13 -4
View File
@@ -197,11 +197,12 @@ export function Explore({
const gate = useGate()
const guide = useProgressGuide('follow-10')
const [selectedInterest, setSelectedInterest] = useState<string | null>(null)
// TODO always get at least 10 back
// TODO always get at least 10 back TODO still
const {
data: suggestedUsers,
isLoading: suggestedUsersIsLoading,
error: suggestedUsersError,
isRefetching: suggestedUsersIsRefetching,
} = useGetSuggestedUsersQuery({
category: selectedInterest,
})
@@ -221,6 +222,7 @@ export function Explore({
data: suggestedSPs,
isLoading: isLoadingSuggestedSPs,
error: suggestedSPsError,
isRefetching: isRefetchingSuggestedSPs,
} = useSuggestedStarterPacksQuery()
const isLoadingMoreFeeds = isFetchingNextFeedsPage && !isLoadingFeeds
@@ -299,7 +301,7 @@ export function Explore({
},
})
if (suggestedUsersIsLoading) {
if (suggestedUsersIsLoading || suggestedUsersIsRefetching) {
i.push({type: 'profilePlaceholder', key: 'profilePlaceholder'})
} else if (suggestedUsersError) {
i.push({
@@ -346,6 +348,7 @@ export function Explore({
moderationOpts,
suggestedUsers,
suggestedUsersIsLoading,
suggestedUsersIsRefetching,
suggestedUsersError,
])
const suggestedFeedsModule = useMemo(() => {
@@ -460,7 +463,7 @@ export function Explore({
iconSize: 'xl',
})
if (isLoadingSuggestedSPs) {
if (isLoadingSuggestedSPs || isRefetchingSuggestedSPs) {
Array.from({length: 3}).forEach((__, index) =>
i.push({
type: 'starterPackSkeleton',
@@ -480,7 +483,13 @@ export function Explore({
})
}
return i
}, [suggestedSPs, _, isLoadingSuggestedSPs, suggestedSPsError])
}, [
suggestedSPs,
_,
isLoadingSuggestedSPs,
suggestedSPsError,
isRefetchingSuggestedSPs,
])
const feedPreviewsModule = useMemo(() => {
const i: ExploreScreenItems[] = []
i.push(...feedPreviewSlices)
@@ -29,10 +29,10 @@ export function ExploreTrendingTopics() {
}
function Inner() {
const {data: trending, error, isLoading} = useGetTrendsQuery()
const {data: trending, error, isLoading, isRefetching} = useGetTrendsQuery()
const noTopics = !isLoading && !error && !trending?.trends?.length
return isLoading ? (
return isLoading || isRefetching ? (
Array.from({length: TOPIC_COUNT}).map((__, i) => (
<TrendingTopicRowSkeleton key={i} withPosts={i === 0} />
))
@@ -26,7 +26,7 @@ export function useGetTrendsQuery() {
return useQuery({
enabled: !!preferences,
refetchOnWindowFocus: true,
staleTime: STALE.MINUTES.THREE,
staleTime: STALE.MINUTES.ONE,
queryKey: createGetTrendsQueryKey(),
queryFn: async () => {
const contentLangs = getContentLanguages().join(',')