about summary refs log tree commit diff
path: root/src/lib/link-meta/resolve-short-link.ts
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-06-26 17:24:33 -0700
committerGitHub <noreply@github.com>2024-06-26 17:24:33 -0700
commit878b0476dd94e187504f503438ca8914a48ac630 (patch)
treea51386f8b6f3e1e11b5b5d668f7a4f3f77b91e69 /src/lib/link-meta/resolve-short-link.ts
parentda4dfeb9cf6506ade2a9619921de128458c4d0d2 (diff)
downloadvoidsky-878b0476dd94e187504f503438ca8914a48ac630.tar.zst
Better starterpack embed (#4659)
Diffstat (limited to 'src/lib/link-meta/resolve-short-link.ts')
-rw-r--r--src/lib/link-meta/resolve-short-link.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/link-meta/resolve-short-link.ts b/src/lib/link-meta/resolve-short-link.ts
new file mode 100644
index 000000000..3a3e2ab46
--- /dev/null
+++ b/src/lib/link-meta/resolve-short-link.ts
@@ -0,0 +1,23 @@
+import {logger} from '#/logger'
+import {startUriToStarterPackUri} from 'lib/strings/starter-pack'
+
+export async function resolveShortLink(shortLink: string) {
+  const controller = new AbortController()
+  const to = setTimeout(() => controller.abort(), 2e3)
+
+  try {
+    const res = await fetch(shortLink, {
+      method: 'GET',
+      signal: controller.signal,
+    })
+    if (res.status !== 200) {
+      return shortLink
+    }
+    return startUriToStarterPackUri(res.url)
+  } catch (e: unknown) {
+    logger.error('Failed to resolve short link', {safeMessage: e})
+    return null
+  } finally {
+    clearTimeout(to)
+  }
+}