about summary refs log tree commit diff
path: root/src/state/queries/app-passwords.ts
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-11-16 11:11:56 -0800
committerGitHub <noreply@github.com>2023-11-16 11:11:56 -0800
commit9f7a162a96200aaca0512765eff938a88c84d6d6 (patch)
treed88bd9fe72c7ec6d1bc156a02b25828fb2905a96 /src/state/queries/app-passwords.ts
parent310a7eaca747e53fb24692998ffe9343762d681f (diff)
downloadvoidsky-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.ts56
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(),
+      })
+    },
+  })
+}