57 lines
1.3 KiB
TypeScript
57 lines
1.3 KiB
TypeScript
|
import {ComAtprotoServerCreateAppPassword} from '@atproto/api'
|
||
|
import {useQuery, useQueryClient, useMutation} from '@tanstack/react-query'
|
||
|
import {useSession} from '../session'
|
||
|
|
||
|
export const RQKEY = () => ['app-passwords']
|
||
|
|
||
|
export function useAppPasswordsQuery() {
|
||
|
const {agent} = useSession()
|
||
|
return useQuery({
|
||
|
queryKey: RQKEY(),
|
||
|
queryFn: async () => {
|
||
|
const res = await agent.com.atproto.server.listAppPasswords({})
|
||
|
return res.data.passwords
|
||
|
},
|
||
|
})
|
||
|
}
|
||
|
|
||
|
export function useAppPasswordCreateMutation() {
|
||
|
const {agent} = useSession()
|
||
|
const queryClient = useQueryClient()
|
||
|
return useMutation<
|
||
|
ComAtprotoServerCreateAppPassword.OutputSchema,
|
||
|
Error,
|
||
|
{name: string}
|
||
|
>({
|
||
|
mutationFn: async ({name}) => {
|
||
|
return (
|
||
|
await agent.com.atproto.server.createAppPassword({
|
||
|
name,
|
||
|
})
|
||
|
).data
|
||
|
},
|
||
|
onSuccess() {
|
||
|
queryClient.invalidateQueries({
|
||
|
queryKey: RQKEY(),
|
||
|
})
|
||
|
},
|
||
|
})
|
||
|
}
|
||
|
|
||
|
export function useAppPasswordDeleteMutation() {
|
||
|
const {agent} = useSession()
|
||
|
const queryClient = useQueryClient()
|
||
|
return useMutation<void, Error, {name: string}>({
|
||
|
mutationFn: async ({name}) => {
|
||
|
await agent.com.atproto.server.revokeAppPassword({
|
||
|
name,
|
||
|
})
|
||
|
},
|
||
|
onSuccess() {
|
||
|
queryClient.invalidateQueries({
|
||
|
queryKey: RQKEY(),
|
||
|
})
|
||
|
},
|
||
|
})
|
||
|
}
|