Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/libs/Navigation/AppNavigator/AuthScreens.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
import moment from 'moment';
import _ from 'underscore';
import lodashGet from 'lodash/get';
import Str from 'expensify-common/lib/str';
import getNavigationModalCardStyle from '../../../styles/getNavigationModalCardStyles';
import withWindowDimensions, {windowDimensionsPropTypes} from '../../../components/withWindowDimensions';
import CONST from '../../../CONST';
Expand Down Expand Up @@ -199,7 +200,7 @@ class AuthScreens extends React.Component {
const MainDrawerNavigator = require('./MainDrawerNavigator').default;
return MainDrawerNavigator;
}}
initialParams={{openOnAdminRoom: openOnAdminRoom === 'true'}}
initialParams={{openOnAdminRoom: Str.toBool(openOnAdminRoom) || undefined}}
/>
<RootStack.Screen
name="ValidateLogin"
Expand Down
24 changes: 24 additions & 0 deletions src/libs/actions/SignInRedirect.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import Onyx from 'react-native-onyx';
import lodashGet from 'lodash/get';
import _ from 'underscore';
import ONYXKEYS from '../../ONYXKEYS';
import * as MainQueue from '../Network/MainQueue';
import DateUtils from '../DateUtils';
import * as Localize from '../Localize';
import * as PersistedRequests from './PersistedRequests';
import NetworkConnection from '../NetworkConnection';
import HttpUtils from '../HttpUtils';
import navigationRef from '../Navigation/navigationRef';
import SCREENS from '../../SCREENS';
import Navigation from '../Navigation/Navigation';

let currentIsOffline;
let currentShouldForceOffline;
Expand Down Expand Up @@ -49,10 +54,28 @@ function clearStorageAndRedirect(errorMessage) {
});
}

/**
* Reset all current params of the Home route
*/
function resetHomeRouteParams() {
Navigation.isNavigationReady().then(() => {
const routes = navigationRef.current && lodashGet(navigationRef.current.getState(), 'routes');
const homeRoute = _.find(routes, route => route.name === SCREENS.HOME);

const emptyParams = {};
_.keys(lodashGet(homeRoute, 'params')).forEach((paramKey) => {
emptyParams[paramKey] = undefined;
});

Navigation.setParams(emptyParams, lodashGet(homeRoute, 'key', ''));
});
}

/**
* Cleanup actions resulting in the user being redirected to the Sign-in page
* - Clears the Onyx store - removing the authToken redirects the user to the Sign-in page
* - Cancels pending network calls - any lingering requests are discarded to prevent unwanted storage writes
* - Clears all current params of the Home route - the login page URL should not contain any parameter
*
* Normally this method would live in Session.js, but that would cause a circular dependency with Network.js.
*
Expand All @@ -64,6 +87,7 @@ function redirectToSignIn(errorMessage) {
PersistedRequests.clear();
NetworkConnection.clearReconnectionCallbacks();
clearStorageAndRedirect(errorMessage);
resetHomeRouteParams();
}

export default redirectToSignIn;