diff options
Diffstat (limited to 'src/state/queries/post-feed.ts')
-rw-r--r-- | src/state/queries/post-feed.ts | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts index 747dba02e..c265cecd6 100644 --- a/src/state/queries/post-feed.ts +++ b/src/state/queries/post-feed.ts @@ -15,6 +15,7 @@ import { } from '@tanstack/react-query' import {HomeFeedAPI} from '#/lib/api/feed/home' +import {aggregateUserInterests} from '#/lib/api/feed/utils' import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' import {logger} from '#/logger' import {STALE} from '#/state/queries' @@ -31,7 +32,7 @@ import {FeedTuner, FeedTunerFn, NoopFeedTuner} from 'lib/api/feed-manip' import {BSKY_FEED_OWNER_DIDS} from 'lib/constants' import {KnownError} from '#/view/com/posts/FeedErrorMessage' import {useFeedTuners} from '../preferences/feed-tuners' -import {useModerationOpts} from './preferences' +import {useModerationOpts, usePreferencesQuery} from './preferences' import {embedViewRecordToPostView, getEmbeddedPost} from './util' type ActorDid = string @@ -102,8 +103,11 @@ export function usePostFeedQuery( ) { const feedTuners = useFeedTuners(feedDesc) const moderationOpts = useModerationOpts() + const {data: preferences} = usePreferencesQuery() + const enabled = + opts?.enabled !== false && Boolean(moderationOpts) && Boolean(preferences) + const userInterests = aggregateUserInterests(preferences) const {getAgent} = useAgent() - const enabled = opts?.enabled !== false && Boolean(moderationOpts) const lastRun = useRef<{ data: InfiniteData<FeedPageUnselected> args: typeof selectArgs @@ -141,6 +145,7 @@ export function usePostFeedQuery( feedDesc, feedParams: params || {}, feedTuners, + userInterests, // Not in the query key because they don't change. getAgent, }), cursor: undefined, @@ -371,11 +376,13 @@ function createApi({ feedDesc, feedParams, feedTuners, + userInterests, getAgent, }: { feedDesc: FeedDescriptor feedParams: FeedParams feedTuners: FeedTunerFn[] + userInterests?: string getAgent: () => BskyAgent }) { if (feedDesc === 'home') { @@ -384,9 +391,10 @@ function createApi({ getAgent, feedParams, feedTuners, + userInterests, }) } else { - return new HomeFeedAPI({getAgent}) + return new HomeFeedAPI({getAgent, userInterests}) } } else if (feedDesc === 'following') { return new FollowingFeedAPI({getAgent}) @@ -401,6 +409,7 @@ function createApi({ return new CustomFeedAPI({ getAgent, feedParams: {feed}, + userInterests, }) } else if (feedDesc.startsWith('list')) { const [_, list] = feedDesc.split('|') |