Update to desired post-feed usage
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
|||||||
AppBskyFeedDefs,
|
AppBskyFeedDefs,
|
||||||
AppBskyFeedPost,
|
AppBskyFeedPost,
|
||||||
AtUri,
|
AtUri,
|
||||||
|
BskyAgent,
|
||||||
ModerationDecision,
|
ModerationDecision,
|
||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {
|
import {
|
||||||
@@ -19,7 +20,7 @@ import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
|
|||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {STALE} from '#/state/queries'
|
import {STALE} from '#/state/queries'
|
||||||
import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const'
|
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 {AuthorFeedAPI} from 'lib/api/feed/author'
|
||||||
import {CustomFeedAPI} from 'lib/api/feed/custom'
|
import {CustomFeedAPI} from 'lib/api/feed/custom'
|
||||||
import {FollowingFeedAPI} from 'lib/api/feed/following'
|
import {FollowingFeedAPI} from 'lib/api/feed/following'
|
||||||
@@ -104,6 +105,7 @@ export function usePostFeedQuery(
|
|||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
const feedTuners = useFeedTuners(feedDesc)
|
const feedTuners = useFeedTuners(feedDesc)
|
||||||
const moderationOpts = useModerationOpts()
|
const moderationOpts = useModerationOpts()
|
||||||
|
const {hasSession} = useSession()
|
||||||
const enabled = opts?.enabled !== false && Boolean(moderationOpts)
|
const enabled = opts?.enabled !== false && Boolean(moderationOpts)
|
||||||
const lastRun = useRef<{
|
const lastRun = useRef<{
|
||||||
data: InfiniteData<FeedPageUnselected>
|
data: InfiniteData<FeedPageUnselected>
|
||||||
@@ -135,11 +137,17 @@ export function usePostFeedQuery(
|
|||||||
queryKey: RQKEY(feedDesc, params),
|
queryKey: RQKEY(feedDesc, params),
|
||||||
async queryFn({pageParam}: {pageParam: RQPageParam}) {
|
async queryFn({pageParam}: {pageParam: RQPageParam}) {
|
||||||
logger.debug('usePostFeedQuery', {feedDesc, cursor: pageParam?.cursor})
|
logger.debug('usePostFeedQuery', {feedDesc, cursor: pageParam?.cursor})
|
||||||
|
const agent = getAgent()
|
||||||
|
|
||||||
const {api, cursor} = pageParam
|
const {api, cursor} = pageParam
|
||||||
? pageParam
|
? pageParam
|
||||||
: {
|
: {
|
||||||
api: createApi(feedDesc, params || {}, feedTuners),
|
api: createApi({
|
||||||
|
feedDesc,
|
||||||
|
feedParams: params || {},
|
||||||
|
feedTuners,
|
||||||
|
agent,
|
||||||
|
}),
|
||||||
cursor: undefined,
|
cursor: undefined,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,7 +161,7 @@ export function usePostFeedQuery(
|
|||||||
* moderations happen later, which results in some posts being shown and
|
* moderations happen later, which results in some posts being shown and
|
||||||
* some not.
|
* some not.
|
||||||
*/
|
*/
|
||||||
if (!getAgent().session) {
|
if (!hasSession) {
|
||||||
assertSomePostsPassModeration(res.feed)
|
assertSomePostsPassModeration(res.feed)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,34 +373,47 @@ export async function pollLatest(page: FeedPage | undefined) {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
function createApi(
|
function createApi({
|
||||||
feedDesc: FeedDescriptor,
|
agent,
|
||||||
params: FeedParams,
|
feedDesc,
|
||||||
feedTuners: FeedTunerFn[],
|
feedParams,
|
||||||
) {
|
feedTuners,
|
||||||
|
}: {
|
||||||
|
agent?: BskyAgent
|
||||||
|
feedDesc: FeedDescriptor
|
||||||
|
feedParams: FeedParams
|
||||||
|
feedTuners: FeedTunerFn[]
|
||||||
|
}) {
|
||||||
if (feedDesc === 'home') {
|
if (feedDesc === 'home') {
|
||||||
if (params.mergeFeedEnabled) {
|
if (feedParams.mergeFeedEnabled) {
|
||||||
return new MergeFeedAPI(params, feedTuners)
|
return new MergeFeedAPI({
|
||||||
|
agent,
|
||||||
|
feedParams,
|
||||||
|
feedTuners,
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
return new HomeFeedAPI()
|
return new HomeFeedAPI({agent})
|
||||||
}
|
}
|
||||||
} else if (feedDesc === 'following') {
|
} else if (feedDesc === 'following') {
|
||||||
return new FollowingFeedAPI()
|
return new FollowingFeedAPI({agent})
|
||||||
} else if (feedDesc.startsWith('author')) {
|
} else if (feedDesc.startsWith('author')) {
|
||||||
const [_, actor, filter] = feedDesc.split('|')
|
const [_, actor, filter] = feedDesc.split('|')
|
||||||
return new AuthorFeedAPI({actor, filter})
|
return new AuthorFeedAPI({agent, actor, filter})
|
||||||
} else if (feedDesc.startsWith('likes')) {
|
} else if (feedDesc.startsWith('likes')) {
|
||||||
const [_, actor] = feedDesc.split('|')
|
const [_, actor] = feedDesc.split('|')
|
||||||
return new LikesFeedAPI({actor})
|
return new LikesFeedAPI({agent, actor})
|
||||||
} else if (feedDesc.startsWith('feedgen')) {
|
} else if (feedDesc.startsWith('feedgen')) {
|
||||||
const [_, feed] = feedDesc.split('|')
|
const [_, feed] = feedDesc.split('|')
|
||||||
return new CustomFeedAPI({feed})
|
return new CustomFeedAPI({
|
||||||
|
agent,
|
||||||
|
feedParams: {feed},
|
||||||
|
})
|
||||||
} else if (feedDesc.startsWith('list')) {
|
} else if (feedDesc.startsWith('list')) {
|
||||||
const [_, list] = feedDesc.split('|')
|
const [_, list] = feedDesc.split('|')
|
||||||
return new ListFeedAPI({list})
|
return new ListFeedAPI({agent, list})
|
||||||
} else {
|
} else {
|
||||||
// shouldnt happen
|
// shouldnt happen
|
||||||
return new FollowingFeedAPI()
|
return new FollowingFeedAPI({agent})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user