about summary refs log tree commit diff
path: root/src/state/queries/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/queries/service.ts')
-rw-r--r--src/state/queries/service.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/state/queries/service.ts b/src/state/queries/service.ts
new file mode 100644
index 000000000..5f7e10778
--- /dev/null
+++ b/src/state/queries/service.ts
@@ -0,0 +1,26 @@
+import {BskyAgent} from '@atproto/api'
+import {useQuery} from '@tanstack/react-query'
+
+export const RQKEY = (serviceUrl: string) => ['service', serviceUrl]
+
+export function useServiceQuery(serviceUrl: string) {
+  return useQuery({
+    queryKey: RQKEY(serviceUrl),
+    queryFn: async () => {
+      const agent = new BskyAgent({service: serviceUrl})
+      const res = await agent.com.atproto.server.describeServer()
+      return res.data
+    },
+    enabled: isValidUrl(serviceUrl),
+  })
+}
+
+function isValidUrl(url: string) {
+  try {
+    // eslint-disable-next-line @typescript-eslint/no-unused-vars
+    const urlp = new URL(url)
+    return true
+  } catch {
+    return false
+  }
+}