Skip to content

Commit

Permalink
configure the bitdrift Capture SDK (bluesky-social#6979)
Browse files Browse the repository at this point in the history
* configure bitdrift Capture SDK

* remove console log

* use the new url

* add patch to fix devtool interaction

* update patches

* fix patch

* add BITDRIFT_API_KEY to .env.example
  • Loading branch information
snowp authored Dec 12, 2024
1 parent c8745a9 commit 20ac42a
Show file tree
Hide file tree
Showing 10 changed files with 64 additions and 0 deletions.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Copy this to `.env` and `.env.test` files

BITDRIFT_API_KEY=
SENTRY_AUTH_TOKEN=
EXPO_PUBLIC_ENV=development
EXPO_PUBLIC_LOG_LEVEL=debug
Expand Down
1 change: 1 addition & 0 deletions app.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ module.exports = function (config) {
},
],
'react-native-compressor',
'@bitdrift/react-native',
'./plugins/starterPackAppClipExtension/withStarterPackAppClip.js',
'./plugins/withAndroidManifestPlugin.js',
'./plugins/withAndroidManifestFCMIconPlugin.js',
Expand Down
6 changes: 6 additions & 0 deletions docs/build.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ However, if you're a part of the Bluesky team and want to enable Sentry, fill in

If you change `SENTRY_AUTH_TOKEN`, you need to do `yarn prebuild` before running `yarn ios` or `yarn android` again.

### Adding bitdrift

Adding bitdirft is NOT required. You can keep `BITDRIFT_API_KEY=` in `.env` which will avoid initializing bitdrift during startup.

However, if you're a part of the Bluesky team and want to enable bitdrift, fill in `BITDRIFT_API_KEY` in your `.env` to enable bitdrift.

### Adding and Updating Locales

- `yarn intl:build` -> you will also need to run this anytime `./src/locale/{locale}/messages.po` change
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
},
"dependencies": {
"@atproto/api": "^0.13.18",
"@bitdrift/react-native": "0.4.0",
"@braintree/sanitize-url": "^6.0.2",
"@discord/bottom-sheet": "bluesky-social/react-native-bottom-sheet",
"@emoji-mart/react": "^1.1.1",
Expand Down
3 changes: 3 additions & 0 deletions patches/expo-modules-core+2.1.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## expo-modules-core Patch

This patch fixes an issue where bitdrift's API stream gets blocked by the Expo interceptor used to power the devtools
15 changes: 15 additions & 0 deletions patches/expo-modules-core+2.1.1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
diff --git a/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt b/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
index 47c4d15..afe138d 100644
--- a/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
+++ b/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
@@ -125,6 +125,10 @@ internal fun peekResponseBody(
}

internal fun shouldParseBody(response: Response): Boolean {
+ if (response.request.url.encodedPath == "/bitdrift_public.protobuf.client.v1.ApiService/Mux") {
+ return false
+ }
+
// Check for Content-Type
val skipContentTypes = listOf(
"text/event-stream", // Server Sent Events
1 change: 1 addition & 0 deletions src/App.native.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'react-native-url-polyfill/auto'
import '#/lib/sentry' // must be near top
import '#/lib/bitdrift' // must be near top
import '#/view/icons'

import React, {useEffect, useState} from 'react'
Expand Down
7 changes: 7 additions & 0 deletions src/lib/bitdrift.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import {init} from '@bitdrift/react-native'

const BITDRIFT_API_KEY = process.env.BITDRIFT_API_KEY

if (BITDRIFT_API_KEY) {
init(BITDRIFT_API_KEY, {url: 'https://api-bsky.bitdrift.io'})
}
24 changes: 24 additions & 0 deletions src/logger/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
import {
debug as bdDebug,
error as bdError,
info as bdInfo,
warn as bdWarn,
} from '@bitdrift/react-native'
import format from 'date-fns/format'
import {nanoid} from 'nanoid/non-secure'

Expand Down Expand Up @@ -131,6 +137,20 @@ export const consoleTransport: Transport = (
}
}

export const bitdriftTransport: Transport = (level, message) => {
const log = (
{
[LogLevel.Debug]: bdDebug,
[LogLevel.Info]: bdInfo,
[LogLevel.Log]: bdInfo,
[LogLevel.Warn]: bdWarn,
[LogLevel.Error]: bdError,
} as const
)[level]

log(message.toString())
}

export const sentryTransport: Transport = (
level,
message,
Expand Down Expand Up @@ -328,6 +348,10 @@ export class Logger {
*/
export const logger = new Logger()

if (!env.IS_TEST) {
logger.addTransport(bitdriftTransport)
}

if (env.IS_DEV && !env.IS_TEST) {
logger.addTransport(consoleTransport)

Expand Down
5 changes: 5 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3377,6 +3377,11 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==

"@bitdrift/[email protected]":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@bitdrift/react-native/-/react-native-0.4.0.tgz#e6484343ef04824aa924df2a757bd9620b2106c1"
integrity sha512-KuYzWEkoGwjjP0ZurjHwV+zfRZjQXxbXa3zhijWv0iqzMI/7kbrBd9lm+wNQo8OrkqFVDlebCb8AGPc0jMZw7A==

"@braintree/sanitize-url@^6.0.2":
version "6.0.4"
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783"
Expand Down

0 comments on commit 20ac42a

Please sign in to comment.