diff --git a/src/screens/Search/Explore.tsx b/src/screens/Search/Explore.tsx index 1827aeb0eb..2db3f72806 100644 --- a/src/screens/Search/Explore.tsx +++ b/src/screens/Search/Explore.tsx @@ -252,7 +252,7 @@ export function Explore({ isFetchingNextPage: isFetchingNextFeedsPage, error: feedsError, fetchNextPage: fetchNextFeedsPage, - } = useGetPopularFeedsQuery({limit: 10}) + } = useGetPopularFeedsQuery({limit: 10, enabled: useFullExperience}) const interestsNux = useNux(Nux.ExploreInterestsCard) const showInterestsNux = interestsNux.status === 'ready' && !interestsNux.nux?.completed @@ -262,7 +262,7 @@ export function Explore({ isLoading: isLoadingSuggestedSPs, error: suggestedSPsError, isRefetching: isRefetchingSuggestedSPs, - } = useSuggestedStarterPacksQuery() + } = useSuggestedStarterPacksQuery({enabled: useFullExperience}) const isLoadingMoreFeeds = isFetchingNextFeedsPage && !isLoadingFeeds const [hasPressedLoadMoreFeeds, setHasPressedLoadMoreFeeds] = useState(false) @@ -285,7 +285,9 @@ export function Explore({ hasPressedLoadMoreFeeds, ]) - const {data: suggestedFeeds} = useGetSuggestedFeedsQuery() + const {data: suggestedFeeds} = useGetSuggestedFeedsQuery({ + enabled: useFullExperience, + }) const { data: feedPreviewSlices, query: { @@ -295,7 +297,7 @@ export function Explore({ hasNextPage: hasNextPageFeedPreviews, error: feedPreviewSlicesError, }, - } = useFeedPreviews(suggestedFeeds?.feeds ?? []) + } = useFeedPreviews(suggestedFeeds?.feeds ?? [], useFullExperience) const qc = useQueryClient() const [isPTR, setIsPTR] = useState(false) diff --git a/src/state/queries/explore-feed-previews.tsx b/src/state/queries/explore-feed-previews.tsx index 2aee8b6b35..4cd7336c08 100644 --- a/src/state/queries/explore-feed-previews.tsx +++ b/src/state/queries/explore-feed-previews.tsx @@ -120,6 +120,7 @@ export type FeedPreviewItem = export function useFeedPreviews( feedsMaybeWithDuplicates: AppBskyFeedDefs.GeneratorView[], + isEnabled: boolean = true, ) { const feeds = useMemo( () => @@ -135,7 +136,7 @@ export function useFeedPreviews( const {data: preferences} = usePreferencesQuery() const userInterests = aggregateUserInterests(preferences) const moderationOpts = useModerationOpts() - const enabled = feeds.length > 0 + const enabled = feeds.length > 0 && isEnabled const query = useInfiniteQuery({ enabled, diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts index 5571c0949d..89023e513e 100644 --- a/src/state/queries/feed.ts +++ b/src/state/queries/feed.ts @@ -1,18 +1,18 @@ import {useCallback, useEffect, useMemo, useRef} from 'react' import { - AppBskyActorDefs, - AppBskyFeedDefs, - AppBskyGraphDefs, - AppBskyUnspeccedGetPopularFeedGenerators, + type AppBskyActorDefs, + type AppBskyFeedDefs, + type AppBskyGraphDefs, + type AppBskyUnspeccedGetPopularFeedGenerators, AtUri, moderateFeedGenerator, RichText, } from '@atproto/api' import { - InfiniteData, + type InfiniteData, keepPreviousData, - QueryClient, - QueryKey, + type QueryClient, + type QueryKey, useInfiniteQuery, useMutation, useQuery, @@ -28,7 +28,7 @@ import {usePreferencesQuery} from '#/state/queries/preferences' import {useAgent, useSession} from '#/state/session' import {router} from '#/routes' import {useModerationOpts} from '../preferences/moderation-opts' -import {FeedDescriptor} from './post-feed' +import {type FeedDescriptor} from './post-feed' import {precacheResolvedUri} from './resolve-uri' export type FeedSourceFeedInfo = { @@ -203,12 +203,12 @@ export const KNOWN_AUTHED_ONLY_FEEDS = [ 'at://did:plc:vpkhqolt662uhesyj6nxm7ys/app.bsky.feed.generator/followpics', // the gram, by why ] -type GetPopularFeedsOptions = {limit?: number} +type GetPopularFeedsOptions = {limit?: number; enabled?: boolean} export function createGetPopularFeedsQueryKey( options?: GetPopularFeedsOptions, ) { - return ['getPopularFeeds', options] + return ['getPopularFeeds', options?.limit] } export function useGetPopularFeedsQuery(options?: GetPopularFeedsOptions) { @@ -237,7 +237,7 @@ export function useGetPopularFeedsQuery(options?: GetPopularFeedsOptions) { QueryKey, string | undefined >({ - enabled: Boolean(moderationOpts), + enabled: Boolean(moderationOpts) && options?.enabled !== false, queryKey: createGetPopularFeedsQueryKey(options), queryFn: async ({pageParam}) => { const res = await agent.app.bsky.unspecced.getPopularFeedGenerators({ diff --git a/src/state/queries/trending/useGetSuggestedFeedsQuery.ts b/src/state/queries/trending/useGetSuggestedFeedsQuery.ts index eef71f1ca3..6eef809425 100644 --- a/src/state/queries/trending/useGetSuggestedFeedsQuery.ts +++ b/src/state/queries/trending/useGetSuggestedFeedsQuery.ts @@ -13,13 +13,13 @@ export const DEFAULT_LIMIT = 5 export const createGetSuggestedFeedsQueryKey = () => ['suggested-feeds'] -export function useGetSuggestedFeedsQuery() { +export function useGetSuggestedFeedsQuery({enabled}: {enabled?: boolean}) { const agent = useAgent() const {data: preferences} = usePreferencesQuery() const savedFeeds = preferences?.savedFeeds return useQuery({ - enabled: !!preferences, + enabled: !!preferences && enabled !== false, staleTime: STALE.MINUTES.THREE, queryKey: createGetSuggestedFeedsQueryKey(), queryFn: async () => { diff --git a/src/state/queries/useSuggestedStarterPacksQuery.ts b/src/state/queries/useSuggestedStarterPacksQuery.ts index 3ec030ac02..cbf61b93a1 100644 --- a/src/state/queries/useSuggestedStarterPacksQuery.ts +++ b/src/state/queries/useSuggestedStarterPacksQuery.ts @@ -13,13 +13,13 @@ export const createSuggestedStarterPacksQueryKey = () => [ 'suggested-starter-packs', ] -export function useSuggestedStarterPacksQuery() { +export function useSuggestedStarterPacksQuery({enabled}: {enabled?: boolean}) { const agent = useAgent() const {data: preferences} = usePreferencesQuery() const contentLangs = getContentLanguages().join(',') return useQuery({ - enabled: !!preferences, + enabled: !!preferences && enabled !== false, staleTime: STALE.MINUTES.THREE, queryKey: createSuggestedStarterPacksQueryKey(), async queryFn() {