diff options
author | Eric Bailey <git@esb.lol> | 2024-04-29 16:04:35 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-29 22:04:35 +0100 |
commit | a4e34537cee8e12a022238f054bee4fe22cc7325 (patch) | |
tree | e8ffbb4993441f64e4c112e9b046c566e577d661 /src/state/queries | |
parent | d893fe005d9d43e28b2926f8fed4f13165843d3b (diff) | |
download | voidsky-a4e34537cee8e12a022238f054bee4fe22cc7325.tar.zst |
Send Bluesky feeds and suggested follows more data (#3695)
* WIP * Fix constructors * Clean up * Tweak * Rm extra assignment * Narrow down the argument --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/state/queries')
-rw-r--r-- | src/state/queries/post-feed.ts | 15 | ||||
-rw-r--r-- | src/state/queries/suggested-follows.ts | 30 |
2 files changed, 36 insertions, 9 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('|') diff --git a/src/state/queries/suggested-follows.ts b/src/state/queries/suggested-follows.ts index 936912ab3..3338130f4 100644 --- a/src/state/queries/suggested-follows.ts +++ b/src/state/queries/suggested-follows.ts @@ -12,8 +12,16 @@ import { useQuery, } from '@tanstack/react-query' +import { + aggregateUserInterests, + createBskyTopicsHeader, +} from '#/lib/api/feed/utils' +import {getContentLanguages} from '#/state/preferences/languages' import {STALE} from '#/state/queries' -import {useModerationOpts} from '#/state/queries/preferences' +import { + useModerationOpts, + usePreferencesQuery, +} from '#/state/queries/preferences' import {useAgent, useSession} from '#/state/session' const suggestedFollowsQueryKeyRoot = 'suggested-follows' @@ -29,6 +37,7 @@ export function useSuggestedFollowsQuery() { const {currentAccount} = useSession() const {getAgent} = useAgent() const moderationOpts = useModerationOpts() + const {data: preferences} = usePreferencesQuery() return useInfiniteQuery< AppBskyActorGetSuggestions.OutputSchema, @@ -37,14 +46,23 @@ export function useSuggestedFollowsQuery() { QueryKey, string | undefined >({ - enabled: !!moderationOpts, + enabled: !!moderationOpts && !!preferences, staleTime: STALE.HOURS.ONE, queryKey: suggestedFollowsQueryKey, queryFn: async ({pageParam}) => { - const res = await getAgent().app.bsky.actor.getSuggestions({ - limit: 25, - cursor: pageParam, - }) + const contentLangs = getContentLanguages().join(',') + const res = await getAgent().app.bsky.actor.getSuggestions( + { + limit: 25, + cursor: pageParam, + }, + { + headers: { + ...createBskyTopicsHeader(aggregateUserInterests(preferences)), + 'Accept-Language': contentLangs, + }, + }, + ) res.data.actors = res.data.actors .filter( |