about summary refs log tree commit diff
path: root/modules/expo-bluesky-swiss-army/src/Referrer/index.web.ts
diff options
context:
space:
mode:
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
+}