[Session] Drill getAgent into feed APIs (#3701)

* Update to desired post-feed usage

* Drill agent into feed apis

* Thread getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
This commit is contained in:
Eric Bailey 2024-04-25 15:29:06 -05:00 committed by GitHub
parent 282ad4b17d
commit ec37696034
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 202 additions and 65 deletions

View file

@ -135,11 +135,14 @@ export function usePostFeedQuery(
queryKey: RQKEY(feedDesc, params),
async queryFn({pageParam}: {pageParam: RQPageParam}) {
logger.debug('usePostFeedQuery', {feedDesc, cursor: pageParam?.cursor})
const {api, cursor} = pageParam
? pageParam
: {
api: createApi(feedDesc, params || {}, feedTuners),
api: createApi({
feedDesc,
feedParams: params || {},
feedTuners,
}),
cursor: undefined,
}
@ -365,34 +368,45 @@ export async function pollLatest(page: FeedPage | undefined) {
return false
}
function createApi(
feedDesc: FeedDescriptor,
params: FeedParams,
feedTuners: FeedTunerFn[],
) {
function createApi({
feedDesc,
feedParams,
feedTuners,
}: {
feedDesc: FeedDescriptor
feedParams: FeedParams
feedTuners: FeedTunerFn[]
}) {
if (feedDesc === 'home') {
if (params.mergeFeedEnabled) {
return new MergeFeedAPI(params, feedTuners)
if (feedParams.mergeFeedEnabled) {
return new MergeFeedAPI({
getAgent,
feedParams,
feedTuners,
})
} else {
return new HomeFeedAPI()
return new HomeFeedAPI({getAgent})
}
} else if (feedDesc === 'following') {
return new FollowingFeedAPI()
return new FollowingFeedAPI({getAgent})
} else if (feedDesc.startsWith('author')) {
const [_, actor, filter] = feedDesc.split('|')
return new AuthorFeedAPI({actor, filter})
return new AuthorFeedAPI({getAgent, feedParams: {actor, filter}})
} else if (feedDesc.startsWith('likes')) {
const [_, actor] = feedDesc.split('|')
return new LikesFeedAPI({actor})
return new LikesFeedAPI({getAgent, feedParams: {actor}})
} else if (feedDesc.startsWith('feedgen')) {
const [_, feed] = feedDesc.split('|')
return new CustomFeedAPI({feed})
return new CustomFeedAPI({
getAgent,
feedParams: {feed},
})
} else if (feedDesc.startsWith('list')) {
const [_, list] = feedDesc.split('|')
return new ListFeedAPI({list})
return new ListFeedAPI({getAgent, feedParams: {list}})
} else {
// shouldnt happen
return new FollowingFeedAPI()
return new FollowingFeedAPI({getAgent})
}
}