diff options
author | Ansh <anshnanda10@gmail.com> | 2023-07-19 23:50:42 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-19 23:50:42 -0700 |
commit | 30ac9259c7b9dc367fca15cb6e7895feb0955bd4 (patch) | |
tree | 12324f472656aaaa5a8c1dabbc1c3eb896b8d7f9 /src/Navigation.tsx | |
parent | 3517d9fa28707a61febd75fd160edc870cc0ade7 (diff) | |
download | voidsky-30ac9259c7b9dc367fca15cb6e7895feb0955bd4.tar.zst |
[APP-775] Add Welcome screen after account creation (#1038)
* add comments to step 1-3 * add onboarding screen * add analytics for onboarding tracking * fix useEffect * change text * change icon size * put onboarding into bottom sheet modal instead of react navigation * wip * Simplify the type validation * Fix: only trigger onboarding modal when account creation succeeds * Add the 'session-ready' event which fires when the new session is stable * Use the 'session-ready' event to trigger the onboarding modal * update copy * update copy --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Diffstat (limited to 'src/Navigation.tsx')
-rw-r--r-- | src/Navigation.tsx | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Navigation.tsx b/src/Navigation.tsx index 640b771d4..06cce0f00 100644 --- a/src/Navigation.tsx +++ b/src/Navigation.tsx @@ -66,6 +66,7 @@ import {SavedFeeds} from 'view/screens/SavedFeeds' import {getRoutingInstrumentation} from 'lib/sentry' import {bskyTitle} from 'lib/strings/headings' import {JSX} from 'react/jsx-runtime' +import {timeout} from 'lib/async/timeout' const navigationRef = createNavigationContainerRef<AllNavigatorParams>() @@ -478,7 +479,8 @@ function resetToTab(tabName: 'HomeTab' | 'SearchTab' | 'NotificationsTab') { } } -function reset() { +// returns a promise that resolves after the state reset is complete +function reset(): Promise<void> { if (navigationRef.isReady()) { navigationRef.dispatch( CommonActions.reset({ @@ -486,6 +488,18 @@ function reset() { routes: [{name: isNative ? 'HomeTab' : 'Home'}], }), ) + return Promise.race([ + timeout(1e3), + new Promise<void>(resolve => { + const handler = () => { + resolve() + navigationRef.removeListener('state', handler) + } + navigationRef.addListener('state', handler) + }), + ]) + } else { + return Promise.resolve() } } |