diff --git a/src/libs/Navigation/getTopmostBottomTabRoute.ts b/src/libs/Navigation/getTopmostBottomTabRoute.ts index 48a8d80f4096..231e815a0016 100644 --- a/src/libs/Navigation/getTopmostBottomTabRoute.ts +++ b/src/libs/Navigation/getTopmostBottomTabRoute.ts @@ -15,7 +15,7 @@ function getTopmostBottomTabRoute(state: State | undefined): throw new Error('BottomTabNavigator route have no routes.'); } - return {name: topmostBottomTabRoute.name as BottomTabName, params: topmostBottomTabRoute.params}; + return {name: topmostBottomTabRoute.name as BottomTabName, params: topmostBottomTabRoute.params, key: topmostBottomTabRoute.key}; } export default getTopmostBottomTabRoute; diff --git a/src/pages/workspace/WorkspaceProfilePage.tsx b/src/pages/workspace/WorkspaceProfilePage.tsx index 04dd1885d486..75ce33eec22d 100644 --- a/src/pages/workspace/WorkspaceProfilePage.tsx +++ b/src/pages/workspace/WorkspaceProfilePage.tsx @@ -21,9 +21,10 @@ import useThemeIllustrations from '@hooks/useThemeIllustrations'; import useThemeStyles from '@hooks/useThemeStyles'; import DistanceRequestUtils from '@libs/DistanceRequestUtils'; import * as ErrorUtils from '@libs/ErrorUtils'; -import Navigation from '@libs/Navigation/Navigation'; +import getTopmostBottomTabRoute from '@libs/Navigation/getTopmostBottomTabRoute'; +import Navigation, {navigationRef} from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import type {FullScreenNavigatorParamList} from '@libs/Navigation/types'; +import type {FullScreenNavigatorParamList, RootStackParamList, State} from '@libs/Navigation/types'; import Parser from '@libs/Parser'; import * as PolicyUtils from '@libs/PolicyUtils'; import * as ReportUtils from '@libs/ReportUtils'; @@ -33,7 +34,7 @@ import * as Policy from '@userActions/Policy/Policy'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import type SCREENS from '@src/SCREENS'; +import SCREENS from '@src/SCREENS'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; import type {WithPolicyProps} from './withPolicy'; import withPolicy from './withPolicy'; @@ -171,7 +172,12 @@ function WorkspaceProfilePage({policyDraft, policy: policyProp, route}: Workspac // If the workspace being deleted is the active workspace, switch to the "All Workspaces" view if (activeWorkspaceID === policy.id) { setActiveWorkspaceID(undefined); - Navigation.navigateWithSwitchPolicyID({policyID: undefined}); + Navigation.dismissModal(); + const rootState = navigationRef.current?.getRootState() as State; + const topmostBottomTabRoute = getTopmostBottomTabRoute(rootState); + if (topmostBottomTabRoute?.name === SCREENS.SETTINGS.ROOT) { + Navigation.setParams({policyID: undefined}, topmostBottomTabRoute?.key); + } } }, [policy?.id, policyName, activeWorkspaceID, setActiveWorkspaceID]); diff --git a/src/pages/workspace/WorkspacesListPage.tsx b/src/pages/workspace/WorkspacesListPage.tsx index 591f97064ea1..36198baf4c30 100755 --- a/src/pages/workspace/WorkspacesListPage.tsx +++ b/src/pages/workspace/WorkspacesListPage.tsx @@ -28,7 +28,9 @@ import useThemeStyles from '@hooks/useThemeStyles'; import {isConnectionInProgress} from '@libs/actions/connections'; import interceptAnonymousUser from '@libs/interceptAnonymousUser'; import localeCompare from '@libs/LocaleCompare'; -import Navigation from '@libs/Navigation/Navigation'; +import getTopmostBottomTabRoute from '@libs/Navigation/getTopmostBottomTabRoute'; +import Navigation, {navigationRef} from '@libs/Navigation/Navigation'; +import type {RootStackParamList, State} from '@libs/Navigation/types'; import * as PolicyUtils from '@libs/PolicyUtils'; import * as ReportUtils from '@libs/ReportUtils'; import type {AvatarSource} from '@libs/UserUtils'; @@ -38,6 +40,7 @@ import * as Session from '@userActions/Session'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import SCREENS from '@src/SCREENS'; import type {Policy as PolicyType} from '@src/types/onyx'; import type * as OnyxCommon from '@src/types/onyx/OnyxCommon'; import type {PolicyDetailsForNonMembers} from '@src/types/onyx/Policy'; @@ -149,7 +152,11 @@ function WorkspacesListPage() { // If the workspace being deleted is the active workspace, switch to the "All Workspaces" view if (activeWorkspaceID === policyIDToDelete) { setActiveWorkspaceID(undefined); - Navigation.navigateWithSwitchPolicyID({policyID: undefined}); + const rootState = navigationRef.current?.getRootState() as State; + const topmostBottomTabRoute = getTopmostBottomTabRoute(rootState); + if (topmostBottomTabRoute?.name === SCREENS.SETTINGS.ROOT) { + Navigation.setParams({policyID: undefined}, topmostBottomTabRoute?.key); + } } };