about summary refs log tree commit diff
path: root/src/logger
diff options
context:
space:
mode:
Diffstat (limited to 'src/logger')
-rw-r--r--src/logger/bitdrift/lib/index.ts1
-rw-r--r--src/logger/bitdrift/lib/index.web.ts4
-rw-r--r--src/logger/bitdrift/setup/index.ts28
-rw-r--r--src/logger/bitdrift/setup/index.web.ts0
-rw-r--r--src/logger/index.ts5
-rw-r--r--src/logger/transports/bitdrift.ts17
6 files changed, 43 insertions, 12 deletions
diff --git a/src/logger/bitdrift/lib/index.ts b/src/logger/bitdrift/lib/index.ts
new file mode 100644
index 000000000..fccd2c57a
--- /dev/null
+++ b/src/logger/bitdrift/lib/index.ts
@@ -0,0 +1 @@
+export {debug, error, info, warn} from '@bitdrift/react-native'
diff --git a/src/logger/bitdrift/lib/index.web.ts b/src/logger/bitdrift/lib/index.web.ts
new file mode 100644
index 000000000..5db69450f
--- /dev/null
+++ b/src/logger/bitdrift/lib/index.web.ts
@@ -0,0 +1,4 @@
+export function debug() {}
+export function error() {}
+export function info() {}
+export function warn() {}
diff --git a/src/logger/bitdrift/setup/index.ts b/src/logger/bitdrift/setup/index.ts
new file mode 100644
index 000000000..d6af3fe24
--- /dev/null
+++ b/src/logger/bitdrift/setup/index.ts
@@ -0,0 +1,28 @@
+import {init, SessionStrategy} from '@bitdrift/react-native'
+import {Statsig} from 'statsig-react-native-expo'
+
+import {initPromise} from '#/lib/statsig/statsig'
+
+const BITDRIFT_API_KEY = process.env.BITDRIFT_API_KEY
+
+initPromise.then(() => {
+  let isEnabled = false
+  let isNetworkEnabled = false
+  try {
+    if (Statsig.checkGate('enable_bitdrift_v2')) {
+      isEnabled = true
+    }
+    if (Statsig.checkGate('enable_bitdrift_v2_networking')) {
+      isNetworkEnabled = true
+    }
+  } catch (e) {
+    // Statsig may complain about it being called too early.
+  }
+  if (isEnabled && BITDRIFT_API_KEY) {
+    init(BITDRIFT_API_KEY, SessionStrategy.Activity, {
+      url: 'https://api-bsky.bitdrift.io',
+      // Only effects iOS, Android instrumentation is set via Gradle Plugin
+      enableNetworkInstrumentation: isNetworkEnabled,
+    })
+  }
+})
diff --git a/src/logger/bitdrift/setup/index.web.ts b/src/logger/bitdrift/setup/index.web.ts
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/src/logger/bitdrift/setup/index.web.ts
diff --git a/src/logger/index.ts b/src/logger/index.ts
index 70b7ee8be..410d29bb3 100644
--- a/src/logger/index.ts
+++ b/src/logger/index.ts
@@ -6,11 +6,14 @@ import {consoleTransport} from '#/logger/transports/console'
 import {sentryTransport} from '#/logger/transports/sentry'
 import {LogContext, LogLevel, Metadata, Transport} from '#/logger/types'
 import {enabledLogLevels} from '#/logger/util'
+import {isNative} from '#/platform/detection'
 
 const TRANSPORTS: Transport[] = (function configureTransports() {
   switch (process.env.NODE_ENV) {
     case 'production': {
-      return [sentryTransport, bitdriftTransport].filter(Boolean) as Transport[]
+      return [sentryTransport, isNative && bitdriftTransport].filter(
+        Boolean,
+      ) as Transport[]
     }
     case 'test': {
       return []
diff --git a/src/logger/transports/bitdrift.ts b/src/logger/transports/bitdrift.ts
index 6e335f29c..cf125c6e2 100644
--- a/src/logger/transports/bitdrift.ts
+++ b/src/logger/transports/bitdrift.ts
@@ -1,18 +1,13 @@
-import {
-  debug as bdDebug,
-  error as bdError,
-  info as bdInfo,
-  warn as bdWarn,
-} from '#/lib/bitdrift'
+import {debug, error, info, warn} from '#/logger/bitdrift/lib'
 import {LogLevel, Transport} from '#/logger/types'
 import {prepareMetadata} from '#/logger/util'
 
 const logFunctions = {
-  [LogLevel.Debug]: bdDebug,
-  [LogLevel.Info]: bdInfo,
-  [LogLevel.Log]: bdInfo,
-  [LogLevel.Warn]: bdWarn,
-  [LogLevel.Error]: bdError,
+  [LogLevel.Debug]: debug,
+  [LogLevel.Info]: info,
+  [LogLevel.Log]: info,
+  [LogLevel.Warn]: warn,
+  [LogLevel.Error]: error,
 } as const
 
 export const bitdriftTransport: Transport = (