From 36a7a8d8c68fc1d3d3fd396dd9f705c966552fcb Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Fri, 28 Feb 2025 12:46:27 -0600 Subject: Colocate bitdrift in logger, use logger for transport (#7868) * Colocate bitdrift in logger, use logger for transport (cherry picked from commit cdd6941fd7f6de9829d61712340a30a55936d2ee) * Fix mocks, format (cherry picked from commit 9de88660c6217ebe7f83e3abfb198f85e26d9c53) * Ok I guess mocks dir doesn't work (cherry picked from commit 9f37e52011d2794ad8fcd732eb26558e9f0ef42c) --- src/logger/bitdrift/lib/index.ts | 1 + src/logger/bitdrift/lib/index.web.ts | 4 ++++ src/logger/bitdrift/setup/index.ts | 28 ++++++++++++++++++++++++++++ src/logger/bitdrift/setup/index.web.ts | 0 src/logger/index.ts | 5 ++++- src/logger/transports/bitdrift.ts | 17 ++++++----------- 6 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 src/logger/bitdrift/lib/index.ts create mode 100644 src/logger/bitdrift/lib/index.web.ts create mode 100644 src/logger/bitdrift/setup/index.ts create mode 100644 src/logger/bitdrift/setup/index.web.ts (limited to 'src/logger') 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 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 = ( -- cgit 1.4.1