From b25aa7eda8bd5ff69de430866e110301be848039 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Mon, 7 Apr 2025 10:38:39 -0500 Subject: [PATCH] Use skeleton states for refetch on focus --- src/screens/Search/Explore.tsx | 17 +++++++++++++---- .../Search/modules/ExploreTrendingTopics.tsx | 4 ++-- src/state/queries/trending/useGetTrendsQuery.ts | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/screens/Search/Explore.tsx b/src/screens/Search/Explore.tsx index 973d4a6ddf..8426abc76e 100644 --- a/src/screens/Search/Explore.tsx +++ b/src/screens/Search/Explore.tsx @@ -197,11 +197,12 @@ export function Explore({ const gate = useGate() const guide = useProgressGuide('follow-10') const [selectedInterest, setSelectedInterest] = useState(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) diff --git a/src/screens/Search/modules/ExploreTrendingTopics.tsx b/src/screens/Search/modules/ExploreTrendingTopics.tsx index d44201a185..56ddbf12be 100644 --- a/src/screens/Search/modules/ExploreTrendingTopics.tsx +++ b/src/screens/Search/modules/ExploreTrendingTopics.tsx @@ -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) => ( )) diff --git a/src/state/queries/trending/useGetTrendsQuery.ts b/src/state/queries/trending/useGetTrendsQuery.ts index 02386a5052..ffe319ca24 100644 --- a/src/state/queries/trending/useGetTrendsQuery.ts +++ b/src/state/queries/trending/useGetTrendsQuery.ts @@ -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(',')