about summary refs log tree commit diff
path: root/modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-07-11 18:43:10 -0700
committerGitHub <noreply@github.com>2024-07-11 18:43:10 -0700
commit8b121af2e438ca77cc5f5b1715516107c18aff6f (patch)
treec7f1a28b63226c79e07aef4d2e88898358a62ec6 /modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts
parent83e8522e0a89be28b1733f4c50dbd4379d98d03b (diff)
downloadvoidsky-8b121af2e438ca77cc5f5b1715516107c18aff6f.tar.zst
referrers for all platforms (#4514)
Diffstat (limited to 'modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts')
-rw-r--r--modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts b/modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts
new file mode 100644
index 000000000..76f03e7c8
--- /dev/null
+++ b/modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts
@@ -0,0 +1,34 @@
+import {Platform} from 'react-native'
+
+import {NotImplementedError} from '../NotImplemented'
+import {GooglePlayReferrerInfo, ReferrerInfo} from './types'
+
+export function getGooglePlayReferrerInfoAsync(): Promise<GooglePlayReferrerInfo> {
+  throw new NotImplementedError()
+}
+
+export function getReferrerInfoAsync(): Promise<ReferrerInfo | null> {
+  if (
+    Platform.OS === 'web' &&
+    // for ssr
+    typeof document !== 'undefined' &&
+    document != null &&
+    document.referrer
+  ) {
+    try {
+      const url = new URL(document.referrer)
+      if (url.hostname !== 'bsky.app') {
+        return {
+          referrer: url.href,
+          hostname: url.hostname,
+        }
+      }
+    } catch {
+      // If something happens to the URL parsing, we don't want to actually cause any problems for the user. Just
+      // log the error so we might catch it
+      console.error('Failed to parse referrer URL')
+    }
+  }
+
+  return null
+}