diff --git a/src/state/queries/trending/useTrendingTopics.ts b/src/state/queries/trending/useTrendingTopics.ts index 6d3580a8fa..757e6a6f7e 100644 --- a/src/state/queries/trending/useTrendingTopics.ts +++ b/src/state/queries/trending/useTrendingTopics.ts @@ -9,6 +9,11 @@ import {useAgent} from '#/state/session' export type TrendingTopic = AppBskyUnspeccedDefs.TrendingTopic +type Response = { + topics: TrendingTopic[] + suggested: TrendingTopic[] +} + export const DEFAULT_LIMIT = 14 export const trendingTopicsQueryKey = ['trending-topics'] @@ -20,7 +25,7 @@ export function useTrendingTopics() { return preferences?.moderationPrefs?.mutedWords || [] }, [preferences?.moderationPrefs]) - return useQuery({ + return useQuery({ refetchOnWindowFocus: true, staleTime: STALE.MINUTES.THREE, queryKey: trendingTopicsQueryKey, @@ -28,22 +33,29 @@ export function useTrendingTopics() { const {data} = await agent.api.app.bsky.unspecced.getTrendingTopics({ limit: DEFAULT_LIMIT, }) - - const {topics, suggested} = data return { - topics: topics.filter(t => { - return !hasMutedWord({ - mutedWords, - text: t.topic + ' ' + t.displayName + ' ' + t.description, - }) - }), - suggested: suggested.filter(t => { - return !hasMutedWord({ - mutedWords, - text: t.topic + ' ' + t.displayName + ' ' + t.description, - }) - }), + topics: data.topics ?? [], + suggested: data.suggested ?? [], } }, + select: React.useCallback( + (data: Response) => { + return { + topics: data.topics.filter(t => { + return !hasMutedWord({ + mutedWords, + text: t.topic + ' ' + t.displayName + ' ' + t.description, + }) + }), + suggested: data.suggested.filter(t => { + return !hasMutedWord({ + mutedWords, + text: t.topic + ' ' + t.displayName + ' ' + t.description, + }) + }), + } + }, + [mutedWords], + ), }) }