about summary refs log tree commit diff
path: root/src/state
diff options
context:
space:
mode:
Diffstat (limited to 'src/state')
-rw-r--r--src/state/queries/handle.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/state/queries/handle.ts b/src/state/queries/handle.ts
new file mode 100644
index 000000000..97e9b2107
--- /dev/null
+++ b/src/state/queries/handle.ts
@@ -0,0 +1,25 @@
+import React from 'react'
+import {useQueryClient} from '@tanstack/react-query'
+
+import {useSession} from '#/state/session'
+
+const fetchHandleQueryKey = (handleOrDid: string) => ['handle', handleOrDid]
+
+export function useFetchHandle() {
+  const {agent} = useSession()
+  const queryClient = useQueryClient()
+
+  return React.useCallback(
+    async (handleOrDid: string) => {
+      if (handleOrDid.startsWith('did:')) {
+        const res = await queryClient.fetchQuery({
+          queryKey: fetchHandleQueryKey(handleOrDid),
+          queryFn: () => agent.getProfile({actor: handleOrDid}),
+        })
+        return res.data.handle
+      }
+      return handleOrDid
+    },
+    [agent, queryClient],
+  )
+}