Filter lists from profile tabs

This commit is contained in:
Eric Bailey
2024-07-24 11:36:28 -05:00
parent 76113be369
commit a9c615066a
+18 -2
View File
@@ -1,7 +1,8 @@
import {AppBskyGraphGetLists} from '@atproto/api'
import {AppBskyGraphGetLists, moderateUserList} from '@atproto/api'
import {InfiniteData, QueryKey, useInfiniteQuery} from '@tanstack/react-query'
import {useAgent} from '#/state/session'
import {useModerationOpts} from '../preferences/moderation-opts'
const PAGE_SIZE = 30
type RQPageParam = string | undefined
@@ -10,7 +11,8 @@ const RQKEY_ROOT = 'profile-lists'
export const RQKEY = (did: string) => [RQKEY_ROOT, did]
export function useProfileListsQuery(did: string, opts?: {enabled?: boolean}) {
const enabled = opts?.enabled !== false
const moderationOpts = useModerationOpts()
const enabled = opts?.enabled !== false && Boolean(moderationOpts)
const agent = useAgent()
return useInfiniteQuery<
AppBskyGraphGetLists.OutputSchema,
@@ -39,5 +41,19 @@ export function useProfileListsQuery(did: string, opts?: {enabled?: boolean}) {
initialPageParam: undefined,
getNextPageParam: lastPage => lastPage.cursor,
enabled,
select(data) {
return {
...data,
pages: data.pages.map(page => {
return {
...page,
lists: page.lists.filter(list => {
const decision = moderateUserList(list, moderationOpts!)
return !decision.ui('contentList').filter
}),
}
}),
}
},
})
}