diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.js b/src/libs/Navigation/AppNavigator/AuthScreens.js index 948bac85a5e2..3f4f2c5ee360 100644 --- a/src/libs/Navigation/AppNavigator/AuthScreens.js +++ b/src/libs/Navigation/AppNavigator/AuthScreens.js @@ -22,6 +22,7 @@ import {fetchCountryCodeByRequestIP} from '../../actions/GeoLocation'; import KeyboardShortcut from '../../KeyboardShortcut'; import Navigation from '../Navigation'; import * as User from '../../actions/User'; +import {setModalVisibility} from '../../actions/Modal'; import NameValuePair from '../../actions/NameValuePair'; import modalCardStyleInterpolator from './modalCardStyleInterpolator'; import createCustomModalStackNavigator from './createCustomModalStackNavigator'; @@ -42,6 +43,17 @@ import { const RootStack = createCustomModalStackNavigator(); +// When modal screen gets focused, update modal visibility in Onyx +// https://reactnavigation.org/docs/navigation-events/ +const modalScreenListeners = { + focus: () => { + setModalVisibility(true); + }, + beforeRemove: () => { + setModalVisibility(false); + }, +}; + const propTypes = { network: PropTypes.shape({isOffline: PropTypes.bool}), ...windowDimensionsPropTypes, @@ -147,36 +159,43 @@ class AuthScreens extends React.Component { name="Settings" options={modalScreenOptions} component={SettingsModalStackNavigator} + listeners={modalScreenListeners} /> );