diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-11-16 11:11:56 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-16 11:11:56 -0800 |
commit | 9f7a162a96200aaca0512765eff938a88c84d6d6 (patch) | |
tree | d88bd9fe72c7ec6d1bc156a02b25828fb2905a96 /src/state/queries/app-passwords.ts | |
parent | 310a7eaca747e53fb24692998ffe9343762d681f (diff) | |
download | voidsky-9f7a162a96200aaca0512765eff938a88c84d6d6.tar.zst |
Refactor app passwords to use react-query (#1932)
Diffstat (limited to 'src/state/queries/app-passwords.ts')
-rw-r--r-- | src/state/queries/app-passwords.ts | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/state/queries/app-passwords.ts b/src/state/queries/app-passwords.ts new file mode 100644 index 000000000..22de75ac3 --- /dev/null +++ b/src/state/queries/app-passwords.ts @@ -0,0 +1,56 @@ +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(), + }) + }, + }) +} |