diff --git a/native/navigation/navigation-utils.js b/native/navigation/navigation-utils.js --- a/native/navigation/navigation-utils.js +++ b/native/navigation/navigation-utils.js @@ -9,6 +9,7 @@ import invariant from 'invariant'; import { + NUXTipOverlayBackdropRouteName, ComposeSubchannelRouteName, AppRouteName, threadRoutes, @@ -167,6 +168,22 @@ return childRoute; } +// isShowingNUXTips assumes nav state is valid +function isShowingNUXTips(state: PossiblyStaleNavigationState): boolean { + const [appRoute] = state.routes; + const appSubroutes = appRoute?.state?.routes; + if (!appSubroutes) { + return false; + } + for (const route of appSubroutes) { + if (route.name === NUXTipOverlayBackdropRouteName) { + return true; + } + } + + return false; +} + export { getStateFromNavigatorRoute, getThreadIDFromParams, @@ -176,4 +193,5 @@ removeScreensFromStack, validNavState, getChildRouteFromNavigatorRoute, + isShowingNUXTips, }; diff --git a/native/root.react.js b/native/root.react.js --- a/native/root.react.js +++ b/native/root.react.js @@ -78,7 +78,10 @@ type NavContextType, } from './navigation/navigation-context.js'; import NavigationHandler from './navigation/navigation-handler.react.js'; -import { validNavState } from './navigation/navigation-utils.js'; +import { + validNavState, + isShowingNUXTips, +} from './navigation/navigation-utils.js'; import OrientationHandler from './navigation/orientation-handler.react.js'; import { navStateAsyncStorageKey } from './navigation/persistance.js'; import RootNavigator from './navigation/root-navigator.react.js'; @@ -158,7 +161,7 @@ ); if (navStateString) { const savedState = JSON.parse(navStateString); - if (validNavState(savedState)) { + if (validNavState(savedState) && !isShowingNUXTips(savedState)) { loadedState = savedState; } }