diff --git a/src/App.native.tsx b/src/App.native.tsx index 64c7e718..8168f39d 100644 --- a/src/App.native.tsx +++ b/src/App.native.tsx @@ -11,7 +11,6 @@ import {enableFreeze} from 'react-native-screens' import 'view/icons' import {init as initPersistedState} from '#/state/persisted' -import {init as initReminders} from '#/state/shell/reminders' import {listenSessionDropped} from './state/events' import {useColorMode} from 'state/shell' import {ThemeProvider} from 'lib/ThemeContext' @@ -48,7 +47,6 @@ function InnerApp() { // init useEffect(() => { - initReminders() analytics.init() notifications.init(queryClient) listenSessionDropped(() => { diff --git a/src/App.web.tsx b/src/App.web.tsx index e939dda6..2558392a 100644 --- a/src/App.web.tsx +++ b/src/App.web.tsx @@ -9,7 +9,6 @@ import {enableFreeze} from 'react-native-screens' import 'view/icons' import {init as initPersistedState} from '#/state/persisted' -import {init as initReminders} from '#/state/shell/reminders' import {useColorMode} from 'state/shell' import * as analytics from 'lib/analytics/analytics' import {Shell} from 'view/shell/index' @@ -41,7 +40,6 @@ function InnerApp() { // init useEffect(() => { - initReminders() analytics.init() const account = persisted.get('session').currentAccount resumeSession(account) diff --git a/src/Navigation.tsx b/src/Navigation.tsx index 4718349b..a26f3693 100644 --- a/src/Navigation.tsx +++ b/src/Navigation.tsx @@ -35,6 +35,12 @@ import {bskyTitle} from 'lib/strings/headings' import {JSX} from 'react/jsx-runtime' import {timeout} from 'lib/async/timeout' import {useUnreadNotifications} from './state/queries/notifications/unread' +import {useSession} from './state/session' +import {useModalControls} from './state/modals' +import { + shouldRequestEmailConfirmation, + setEmailConfirmationRequested, +} from './state/shell/reminders' import {HomeScreen} from './view/screens/Home' import {SearchScreen} from './view/screens/Search' @@ -464,6 +470,16 @@ const LINKING = { function RoutesContainer({children}: React.PropsWithChildren<{}>) { const theme = useColorSchemeStyle(DefaultTheme, DarkTheme) + const {currentAccount} = useSession() + const {openModal} = useModalControls() + + function onReady() { + if (currentAccount && shouldRequestEmailConfirmation(currentAccount)) { + openModal({name: 'verify-email', showReminder: true}) + setEmailConfirmationRequested() + } + } + return ( ) { theme={theme} onReady={() => { SplashScreen.hideAsync() - const initMs = Math.round( - // @ts-ignore Emitted by Metro in the bundle prelude - performance.now() - global.__BUNDLE_START_TIME__, - ) - console.log(`Time to first paint: ${initMs} ms`) - logModuleInitTrace() + logModuleInitTime() + onReady() }}> {children} @@ -585,7 +597,17 @@ const styles = StyleSheet.create({ }, }) -function logModuleInitTrace() { +let didInit = false +function logModuleInitTime() { + if (didInit) { + return + } + didInit = true + const initMs = Math.round( + // @ts-ignore Emitted by Metro in the bundle prelude + performance.now() - global.__BUNDLE_START_TIME__, + ) + console.log(`Time to first paint: ${initMs} ms`) if (__DEV__) { // This log is noisy, so keep false committed const shouldLog = false diff --git a/src/state/shell/reminders.ts b/src/state/shell/reminders.ts index 88d0a5d8..ee924eb0 100644 --- a/src/state/shell/reminders.ts +++ b/src/state/shell/reminders.ts @@ -2,17 +2,6 @@ import * as persisted from '#/state/persisted' import {toHashCode} from 'lib/strings/helpers' import {isOnboardingActive} from './onboarding' import {SessionAccount} from '../session' -import {listenSessionLoaded} from '../events' -import {unstable__openModal} from '../modals' - -export function init() { - listenSessionLoaded(account => { - if (shouldRequestEmailConfirmation(account)) { - unstable__openModal({name: 'verify-email', showReminder: true}) - setEmailConfirmationRequested() - } - }) -} export function shouldRequestEmailConfirmation(account: SessionAccount) { if (!account) {