diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Navigation.tsx | 15 | ||||
-rw-r--r-- | src/lib/hooks/useIntentHandler.ts | 15 | ||||
-rw-r--r-- | src/lib/statsig/events.ts | 5 | ||||
-rw-r--r-- | src/lib/statsig/statsig.tsx | 21 |
4 files changed, 33 insertions, 23 deletions
diff --git a/src/Navigation.tsx b/src/Navigation.tsx index 495435122..8c815a3fe 100644 --- a/src/Navigation.tsx +++ b/src/Navigation.tsx @@ -31,7 +31,7 @@ import { } from 'lib/routes/types' import {RouteParams, State} from 'lib/routes/types' import {bskyTitle} from 'lib/strings/headings' -import {isAndroid, isNative} from 'platform/detection' +import {isAndroid, isNative, isWeb} from 'platform/detection' import {PreferencesExternalEmbeds} from '#/view/screens/PreferencesExternalEmbeds' import {AppPasswords} from 'view/screens/AppPasswords' import {ModerationBlockedAccounts} from 'view/screens/ModerationBlockedAccounts' @@ -49,6 +49,7 @@ import { StarterPackScreenShort, } from '#/screens/StarterPack/StarterPackScreen' import {Wizard} from '#/screens/StarterPack/Wizard' +import {Referrer} from '../modules/expo-bluesky-swiss-army' import {init as initAnalytics} from './lib/analytics/analytics' import {useWebScrollRestoration} from './lib/hooks/useWebScrollRestoration' import {attachRouteToLogEvents, logEvent} from './lib/statsig/statsig' @@ -769,6 +770,18 @@ function logModuleInitTime() { initMs, }) + if (isWeb) { + Referrer.getReferrerInfoAsync().then(info => { + if (info && info.hostname !== 'bsky.app') { + logEvent('deepLink:referrerReceived', { + to: window.location.href, + referrer: info?.referrer, + hostname: info?.hostname, + }) + } + }) + } + if (__DEV__) { // This log is noisy, so keep false committed const shouldLog = false diff --git a/src/lib/hooks/useIntentHandler.ts b/src/lib/hooks/useIntentHandler.ts index 8741530b5..3235e1a6a 100644 --- a/src/lib/hooks/useIntentHandler.ts +++ b/src/lib/hooks/useIntentHandler.ts @@ -1,9 +1,12 @@ import React from 'react' import * as Linking from 'expo-linking' + +import {logEvent} from 'lib/statsig/statsig' import {isNative} from 'platform/detection' -import {useComposerControls} from 'state/shell' import {useSession} from 'state/session' +import {useComposerControls} from 'state/shell' import {useCloseAllActiveElements} from 'state/util' +import {Referrer} from '../../../modules/expo-bluesky-swiss-army' type IntentType = 'compose' @@ -15,6 +18,16 @@ export function useIntentHandler() { React.useEffect(() => { const handleIncomingURL = (url: string) => { + Referrer.getReferrerInfoAsync().then(info => { + if (info && info.hostname !== 'bsky.app') { + logEvent('deepLink:referrerReceived', { + to: url, + referrer: info?.referrer, + hostname: info?.hostname, + }) + } + }) + // We want to be able to support bluesky:// deeplinks. It's unnatural for someone to use a deeplink with three // slashes, like bluesky:///intent/follow. However, supporting just two slashes causes us to have to take care // of two cases when parsing the url. If we ensure there is a third slash, we can always ensure the first diff --git a/src/lib/statsig/events.ts b/src/lib/statsig/events.ts index 4946fb7f2..159061eac 100644 --- a/src/lib/statsig/events.ts +++ b/src/lib/statsig/events.ts @@ -25,6 +25,11 @@ export type LogEvents = { } 'state:foreground:sampled': {} 'router:navigate:sampled': {} + 'deepLink:referrerReceived': { + to: string + referrer: string + hostname: string + } // Screen events 'splash:signInPressed': {} diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx index 94a1e63d0..81707d2bf 100644 --- a/src/lib/statsig/statsig.tsx +++ b/src/lib/statsig/statsig.tsx @@ -28,8 +28,6 @@ type StatsigUser = { bundleDate: number refSrc: string refUrl: string - referrer: string - referrerHostname: string appLanguage: string contentLanguages: string[] } @@ -37,29 +35,12 @@ type StatsigUser = { let refSrc = '' let refUrl = '' -let referrer = '' -let referrerHostname = '' if (isWeb && typeof window !== 'undefined') { const params = new URLSearchParams(window.location.search) refSrc = params.get('ref_src') ?? '' refUrl = decodeURIComponent(params.get('ref_url') ?? '') } -if ( - isWeb && - typeof document !== 'undefined' && - document != null && - document.referrer -) { - try { - const url = new URL(document.referrer) - if (url.hostname !== 'bsky.app') { - referrer = document.referrer - referrerHostname = url.hostname - } - } catch {} -} - export type {LogEvents} function createStatsigOptions(prefetchUsers: StatsigUser[]) { @@ -222,8 +203,6 @@ function toStatsigUser(did: string | undefined): StatsigUser { custom: { refSrc, refUrl, - referrer, - referrerHostname, platform: Platform.OS as 'ios' | 'android' | 'web', bundleIdentifier: BUNDLE_IDENTIFIER, bundleDate: BUNDLE_DATE, |