Bluesky app fork with some witchin' additions 💫

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)

authored by

Eric Bailey and committed by
GitHub
36a7a8d8 7c36ea11

+15 -23
+1 -1
jest/jestSetup.js
··· 119 119 }, 120 120 })) 121 121 122 - jest.mock('../src/lib/bitdrift', () => ({})) 122 + jest.mock('../src/logger/bitdrift/lib', () => ({})) 123 123 jest.mock('../src/lib/statsig/statsig', () => ({}))
+1 -1
src/App.native.tsx
··· 1 1 import 'react-native-url-polyfill/auto' 2 2 import '#/logger/sentry/setup' 3 - import '#/lib/bitdrift' // must be near top 3 + import '#/logger/bitdrift/setup' 4 4 import '#/view/icons' 5 5 6 6 import React, {useEffect, useState} from 'react'
+1 -3
src/lib/bitdrift.ts src/logger/bitdrift/setup/index.ts
··· 1 1 import {init, SessionStrategy} from '@bitdrift/react-native' 2 2 import {Statsig} from 'statsig-react-native-expo' 3 3 4 - import {initPromise} from './statsig/statsig' 5 - 6 - export {debug, error, info, warn} from '@bitdrift/react-native' 4 + import {initPromise} from '#/lib/statsig/statsig' 7 5 8 6 const BITDRIFT_API_KEY = process.env.BITDRIFT_API_KEY 9 7
src/lib/bitdrift.web.ts src/logger/bitdrift/lib/index.web.ts
+1 -6
src/lib/statsig/statsig.tsx
··· 4 4 import {Statsig, StatsigProvider} from 'statsig-react-native-expo' 5 5 6 6 import {BUNDLE_DATE, BUNDLE_IDENTIFIER, IS_TESTFLIGHT} from '#/lib/app-info' 7 - import * as bitdrift from '#/lib/bitdrift' 8 7 import {logger} from '#/logger' 9 8 import {isWeb} from '#/platform/detection' 10 9 import * as persisted from '#/state/persisted' ··· 102 101 if (Statsig.initializeCalled()) { 103 102 Statsig.logEvent(eventName, null, fullMetadata) 104 103 } 105 - // Intentionally bypass the logger abstraction to log rich objects. 106 - console.groupCollapsed(eventName) 107 - console.log(fullMetadata) 108 - console.groupEnd() 109 - bitdrift.info(eventName, fullMetadata) 104 + logger.info(eventName, fullMetadata) 110 105 } catch (e) { 111 106 // A log should never interrupt the calling code, whatever happens. 112 107 logger.error('Failed to log an event', {message: e})
+1
src/logger/bitdrift/lib/index.ts
··· 1 + export {debug, error, info, warn} from '@bitdrift/react-native'
src/logger/bitdrift/setup/index.web.ts

This is a binary file and will not be displayed.

+4 -1
src/logger/index.ts
··· 6 6 import {sentryTransport} from '#/logger/transports/sentry' 7 7 import {LogContext, LogLevel, Metadata, Transport} from '#/logger/types' 8 8 import {enabledLogLevels} from '#/logger/util' 9 + import {isNative} from '#/platform/detection' 9 10 10 11 const TRANSPORTS: Transport[] = (function configureTransports() { 11 12 switch (process.env.NODE_ENV) { 12 13 case 'production': { 13 - return [sentryTransport, bitdriftTransport].filter(Boolean) as Transport[] 14 + return [sentryTransport, isNative && bitdriftTransport].filter( 15 + Boolean, 16 + ) as Transport[] 14 17 } 15 18 case 'test': { 16 19 return []
+6 -11
src/logger/transports/bitdrift.ts
··· 1 - import { 2 - debug as bdDebug, 3 - error as bdError, 4 - info as bdInfo, 5 - warn as bdWarn, 6 - } from '#/lib/bitdrift' 1 + import {debug, error, info, warn} from '#/logger/bitdrift/lib' 7 2 import {LogLevel, Transport} from '#/logger/types' 8 3 import {prepareMetadata} from '#/logger/util' 9 4 10 5 const logFunctions = { 11 - [LogLevel.Debug]: bdDebug, 12 - [LogLevel.Info]: bdInfo, 13 - [LogLevel.Log]: bdInfo, 14 - [LogLevel.Warn]: bdWarn, 15 - [LogLevel.Error]: bdError, 6 + [LogLevel.Debug]: debug, 7 + [LogLevel.Info]: info, 8 + [LogLevel.Log]: info, 9 + [LogLevel.Warn]: warn, 10 + [LogLevel.Error]: error, 16 11 } as const 17 12 18 13 export const bitdriftTransport: Transport = (