From 38aa11adea601e9ac1901e728a759cd48e69fc36 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Thu, 25 Apr 2024 10:43:05 -0500 Subject: [PATCH] Update to desired post-feed usage --- src/state/queries/post-feed.ts | 55 +++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts index 3453a77648..ecb21f4353 100644 --- a/src/state/queries/post-feed.ts +++ b/src/state/queries/post-feed.ts @@ -4,6 +4,7 @@ import { AppBskyFeedDefs, AppBskyFeedPost, AtUri, + BskyAgent, ModerationDecision, } from '@atproto/api' import { @@ -19,7 +20,7 @@ import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' import {logger} from '#/logger' import {STALE} from '#/state/queries' import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const' -import {getAgent} from '#/state/session' +import {getAgent, useSession} from '#/state/session' import {AuthorFeedAPI} from 'lib/api/feed/author' import {CustomFeedAPI} from 'lib/api/feed/custom' import {FollowingFeedAPI} from 'lib/api/feed/following' @@ -104,6 +105,7 @@ export function usePostFeedQuery( const queryClient = useQueryClient() const feedTuners = useFeedTuners(feedDesc) const moderationOpts = useModerationOpts() + const {hasSession} = useSession() const enabled = opts?.enabled !== false && Boolean(moderationOpts) const lastRun = useRef<{ data: InfiniteData @@ -135,11 +137,17 @@ export function usePostFeedQuery( queryKey: RQKEY(feedDesc, params), async queryFn({pageParam}: {pageParam: RQPageParam}) { logger.debug('usePostFeedQuery', {feedDesc, cursor: pageParam?.cursor}) + const agent = getAgent() const {api, cursor} = pageParam ? pageParam : { - api: createApi(feedDesc, params || {}, feedTuners), + api: createApi({ + feedDesc, + feedParams: params || {}, + feedTuners, + agent, + }), cursor: undefined, } @@ -153,7 +161,7 @@ export function usePostFeedQuery( * moderations happen later, which results in some posts being shown and * some not. */ - if (!getAgent().session) { + if (!hasSession) { assertSomePostsPassModeration(res.feed) } @@ -365,34 +373,47 @@ export async function pollLatest(page: FeedPage | undefined) { return false } -function createApi( - feedDesc: FeedDescriptor, - params: FeedParams, - feedTuners: FeedTunerFn[], -) { +function createApi({ + agent, + feedDesc, + feedParams, + feedTuners, +}: { + agent?: BskyAgent + feedDesc: FeedDescriptor + feedParams: FeedParams + feedTuners: FeedTunerFn[] +}) { if (feedDesc === 'home') { - if (params.mergeFeedEnabled) { - return new MergeFeedAPI(params, feedTuners) + if (feedParams.mergeFeedEnabled) { + return new MergeFeedAPI({ + agent, + feedParams, + feedTuners, + }) } else { - return new HomeFeedAPI() + return new HomeFeedAPI({agent}) } } else if (feedDesc === 'following') { - return new FollowingFeedAPI() + return new FollowingFeedAPI({agent}) } else if (feedDesc.startsWith('author')) { const [_, actor, filter] = feedDesc.split('|') - return new AuthorFeedAPI({actor, filter}) + return new AuthorFeedAPI({agent, actor, filter}) } else if (feedDesc.startsWith('likes')) { const [_, actor] = feedDesc.split('|') - return new LikesFeedAPI({actor}) + return new LikesFeedAPI({agent, actor}) } else if (feedDesc.startsWith('feedgen')) { const [_, feed] = feedDesc.split('|') - return new CustomFeedAPI({feed}) + return new CustomFeedAPI({ + agent, + feedParams: {feed}, + }) } else if (feedDesc.startsWith('list')) { const [_, list] = feedDesc.split('|') - return new ListFeedAPI({list}) + return new ListFeedAPI({agent, list}) } else { // shouldnt happen - return new FollowingFeedAPI() + return new FollowingFeedAPI({agent}) } }