about summary refs log tree commit diff
path: root/src/state/queries/resolve-uri.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/queries/resolve-uri.ts')
-rw-r--r--src/state/queries/resolve-uri.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/state/queries/resolve-uri.ts b/src/state/queries/resolve-uri.ts
new file mode 100644
index 000000000..770be5cf8
--- /dev/null
+++ b/src/state/queries/resolve-uri.ts
@@ -0,0 +1,17 @@
+import {useQuery} from '@tanstack/react-query'
+import {AtUri} from '@atproto/api'
+import {useSession} from '../session'
+
+export const RQKEY = (uri: string) => ['resolved-uri', uri]
+
+export function useResolveUriQuery(uri: string) {
+  const {agent} = useSession()
+  return useQuery<string | undefined, Error>(RQKEY(uri), async () => {
+    const urip = new AtUri(uri)
+    if (!urip.host.startsWith('did:')) {
+      const res = await agent.resolveHandle({handle: urip.host})
+      urip.host = res.data.did
+    }
+    return urip.toString()
+  })
+}