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 }