Merge branch '3p-moderators' of github.com:bluesky-social/social-app into 3p-moderators

This commit is contained in:
Paul Frazee
2024-02-14 21:51:02 -08:00
15 changed files with 905 additions and 432 deletions
+55 -4
View File
@@ -1,10 +1,19 @@
import {z} from 'zod'
import {useQuery, useMutation, useQueryClient} from '@tanstack/react-query'
import {AppBskyModerationDefs} from '@atproto/api'
import {getAgent} from '#/state/session'
import {preferencesQueryKey} from '#/state/queries/preferences'
export const modServiceInfoQueryKey = (did: string) => ['mod-service-info', did]
export const modServicesInfoQueryKey = (dids: string[]) => [
'mod-services-info',
dids,
]
export const modServicesDetailedInfoQueryKey = (dids: string[]) => [
'mod-services-detailed-info',
dids,
]
export function useModServiceInfoQuery({did}: {did: string}) {
return useQuery({
@@ -16,6 +25,42 @@ export function useModServiceInfoQuery({did}: {did: string}) {
})
}
export function useModServicesInfoQuery({dids}: {dids: string[]}) {
return useQuery({
enabled: !!dids.length,
queryKey: modServicesInfoQueryKey(dids),
queryFn: async () => {
const res = await getAgent().app.bsky.moderation.getServices({dids})
return res.data.views
},
})
}
export function useModServicesDetailedInfoQuery({dids}: {dids: string[]}) {
return useQuery({
queryKey: modServicesDetailedInfoQueryKey(dids),
queryFn: async () => {
const views: AppBskyModerationDefs.ModServiceViewDetailed[] = []
await Promise.all(
dids.map(did => {
return getAgent()
.app.bsky.moderation.getService({did})
.then(res => {
views.push(res.data)
})
.catch(e => {
console.error(e)
return null
})
}),
)
return views
},
})
}
export function useModServiceSubscriptionMutation() {
const queryClient = useQueryClient()
@@ -52,9 +97,7 @@ export function useModServiceEnableMutation() {
enabled: z.boolean(),
}).parse({did, enabled})
await getAgent().setModServiceEnabled(did, enabled)
},
onSuccess() {
queryClient.invalidateQueries({
await queryClient.invalidateQueries({
queryKey: preferencesQueryKey,
})
},
@@ -65,7 +108,15 @@ export function useModServiceLabelGroupEnableMutation() {
const queryClient = useQueryClient()
return useMutation({
async mutationFn({did, group, enabled}: {did: string; group: string, enabled: boolean}) {
async mutationFn({
did,
group,
enabled,
}: {
did: string
group: string
enabled: boolean
}) {
// TODO
z.object({
did: z.string(),
+21
View File
@@ -4,6 +4,7 @@ import {
LabelPreference,
BskyFeedViewPreference,
ModerationOpts,
LabelGroupDefinition,
} from '@atproto/api'
import {track} from '#/lib/analytics/analytics'
@@ -124,6 +125,26 @@ export function usePreferencesSetContentLabelMutation() {
})
}
export function useSetContentLabelMutation() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: async ({
labelGroup,
visibility,
}: {
labelGroup: LabelGroupDefinition['id']
visibility: LabelPreference
}) => {
await getAgent().setContentLabelPref(labelGroup, visibility)
// triggers a refetch
await queryClient.invalidateQueries({
queryKey: preferencesQueryKey,
})
},
})
}
export function usePreferencesSetAdultContentMutation() {
const queryClient = useQueryClient()