From 15bbb7c6bcd8623d1da026cad51dd77d17c2803e Mon Sep 17 00:00:00 2001
From: Juliano Lazzarotto <30806844+stackchain@users.noreply.github.com>
Date: Thu, 23 May 2024 14:05:02 +0100
Subject: [PATCH] refactor(wallet-mobile): app init
---
apps/wallet-mobile/ampli.json | 2 +-
apps/wallet-mobile/src/InitApp.tsx | 4 +-
apps/wallet-mobile/src/YoroiApp.tsx | 49 ++++++++-------
.../kernel/logger/hooks/useSetupLogger.tsx | 59 +++++++++++--------
4 files changed, 65 insertions(+), 49 deletions(-)
diff --git a/apps/wallet-mobile/ampli.json b/apps/wallet-mobile/ampli.json
index b876770945..b35b876223 100644
--- a/apps/wallet-mobile/ampli.json
+++ b/apps/wallet-mobile/ampli.json
@@ -10,7 +10,7 @@
"Platform": "React Native",
"Language": "TypeScript",
"SDK": "@amplitude/analytics-react-native@^1.0",
- "Path": "./src/metrics/ampli",
+ "Path": "./src/kernel/metrics/ampli",
"InstanceNames": [
"track"
]
diff --git a/apps/wallet-mobile/src/InitApp.tsx b/apps/wallet-mobile/src/InitApp.tsx
index 94811094d6..7c9ac79874 100644
--- a/apps/wallet-mobile/src/InitApp.tsx
+++ b/apps/wallet-mobile/src/InitApp.tsx
@@ -16,8 +16,8 @@ if (Platform.OS === 'android') {
}
export const InitApp = () => {
- const loaded = useInitApp()
- if (!loaded) return null
+ const isLoaded = useInitApp()
+ if (!isLoaded) return null
return
}
diff --git a/apps/wallet-mobile/src/YoroiApp.tsx b/apps/wallet-mobile/src/YoroiApp.tsx
index 7b68b954ec..1bc359cd7d 100644
--- a/apps/wallet-mobile/src/YoroiApp.tsx
+++ b/apps/wallet-mobile/src/YoroiApp.tsx
@@ -20,6 +20,7 @@ import {WalletManagerProvider} from './features/WalletManager/context/WalletMana
import {InitApp} from './InitApp'
import {disableLogbox} from './kernel/env'
import {LanguageProvider} from './kernel/i18n'
+import {useSetupLogger} from './kernel/logger/hooks/useSetupLogger'
import {makeMetricsManager, MetricsProvider} from './kernel/metrics/metricsManager'
import {useMigrations} from './kernel/storage/migrations/useMigrations'
import {rootStorage} from './kernel/storage/rootStorage'
@@ -31,15 +32,13 @@ enableFreeze(true)
if (disableLogbox) LogBox.ignoreAllLogs()
const queryClient = new QueryClient()
-
const metricsManager = makeMetricsManager()
-export const YoroiApp = () => {
- const migrated = useMigrations(rootStorage)
-
+const Yoroi = () => {
+ const isMigrated = useMigrations(rootStorage)
const themeStorage = useThemeStorageMaker()
- if (!migrated) return null
+ if (!isMigrated) return null
return (
@@ -51,21 +50,17 @@ export const YoroiApp = () => {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -77,3 +72,17 @@ export const YoroiApp = () => {
)
}
+
+export const YoroiApp = () => {
+ const isReady = useSetupLogger()
+
+ if (!isReady) return null
+
+ return (
+
+
+
+
+
+ )
+}
diff --git a/apps/wallet-mobile/src/kernel/logger/hooks/useSetupLogger.tsx b/apps/wallet-mobile/src/kernel/logger/hooks/useSetupLogger.tsx
index 89795ba055..556e4aeda2 100644
--- a/apps/wallet-mobile/src/kernel/logger/hooks/useSetupLogger.tsx
+++ b/apps/wallet-mobile/src/kernel/logger/hooks/useSetupLogger.tsx
@@ -1,5 +1,6 @@
import * as React from 'react'
+import {getCrashReportsEnabled} from '../../../yoroi-wallets/hooks'
import {appInfo} from '../../appInfo'
import {loggerLevel} from '../../config'
import {isDev, isProduction, sentryDsn} from '../../env'
@@ -8,36 +9,42 @@ import {Sentry} from '../adapters/sentry'
import {sentryAdapter} from '../adapters/sentry-transporter'
import {logger} from '../logger'
-export const useSetupLogger = (initialState: {enabled: boolean}) => {
- const ref = React.useRef(initialState.enabled)
- ref.current = initialState.enabled
+export const useSetupLogger = () => {
+ const [done, setDone] = React.useState(false)
React.useEffect(() => {
- const sampleRate = isProduction ? 0.25 : 1
+ const initLogger = async () => {
+ const sampleRate = isProduction ? 0.25 : 1
+ const isEnabled = await getCrashReportsEnabled()
- logger.level = loggerLevel
- if (isDev) logger.addTransport(devAdapter().transporter)
+ logger.level = loggerLevel
+ if (isDev) logger.addTransport(devAdapter().transporter)
- if (ref.current === true) {
- logger.enable()
- } else {
- logger.disable()
- }
+ if (isEnabled) {
+ logger.enable()
+ } else {
+ logger.disable()
+ }
+
+ Sentry.init({
+ dsn: sentryDsn,
+ tracesSampleRate: sampleRate,
+ environment: appInfo.environment,
+ release: appInfo.release,
+ dist: appInfo.distribution,
+ beforeSend(event) {
+ // https://github.com/getsentry/sentry-javascript/issues/2039
+ // TODO: this will require to close the app when changing in the settings to take effect
+ return isEnabled ? event : null
+ },
+ })
+
+ logger.addTransport(sentryAdapter().transporter)
- Sentry.init({
- dsn: sentryDsn,
- tracesSampleRate: sampleRate,
- environment: appInfo.environment,
- release: appInfo.release,
- dist: appInfo.distribution,
- beforeSend(event) {
- // https://github.com/getsentry/sentry-javascript/issues/2039
- // TODO: this will require to close the app when changing in the settings to take effect
- const isEnabled = ref.current
- return isEnabled ? event : null
- },
- })
-
- logger.addTransport(sentryAdapter().transporter)
+ setDone(true)
+ }
+ initLogger()
}, [])
+
+ return done
}