diff options
author | dan <dan.abramov@gmail.com> | 2023-12-06 00:28:11 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-06 00:28:11 +0000 |
commit | fab9f839d0234d1df7e595f53eff17177f5a9c67 (patch) | |
tree | 4a453fea5d587a57d192dd33082e6a280c4d0ce5 /src | |
parent | e7f973852f0b7f086d7648c4a978c0c46025c2eb (diff) | |
download | voidsky-fab9f839d0234d1df7e595f53eff17177f5a9c67.tar.zst |
Fix email confirmation dialog on startup (#2097)
* Move init time logging to a fn, add guard * Fix email confirmation dialog on startup
Diffstat (limited to 'src')
-rw-r--r-- | src/App.native.tsx | 2 | ||||
-rw-r--r-- | src/App.web.tsx | 2 | ||||
-rw-r--r-- | src/Navigation.tsx | 36 | ||||
-rw-r--r-- | src/state/shell/reminders.ts | 11 |
4 files changed, 29 insertions, 22 deletions
diff --git a/src/App.native.tsx b/src/App.native.tsx index 64c7e718f..8168f39d4 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 e939dda6d..2558392a5 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 4718349b5..a26f36939 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 ( <NavigationContainer ref={navigationRef} @@ -471,12 +487,8 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { 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} </NavigationContainer> @@ -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 88d0a5d85..ee924eb00 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) { |