diff --git a/src/ROUTES.ts b/src/ROUTES.ts index b98717b51f5d..4e6cc5e69be2 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -811,11 +811,11 @@ const ROUTES = { }, WORKSPACE_PROFILE: { route: 'settings/workspaces/:policyID/profile', - getRoute: (policyID: string | undefined) => { + getRoute: (policyID: string | undefined, backTo?: string) => { if (!policyID) { Log.warn('Invalid policyID is used to build the WORKSPACE_PROFILE route'); } - return `settings/workspaces/${policyID}/profile` as const; + return getUrlWithBackToParam(`settings/workspaces/${policyID}/profile` as const, backTo); }, }, WORKSPACE_PROFILE_ADDRESS: { diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index fa274d1ecf7e..958d02a6a71d 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1581,9 +1581,11 @@ type SettingsSplitNavigatorParamList = { type WorkspaceSplitNavigatorParamList = { [SCREENS.WORKSPACE.INITIAL]: { policyID: string; + backTo?: Routes; }; [SCREENS.WORKSPACE.PROFILE]: { policyID: string; + backTo?: Routes; }; [SCREENS.WORKSPACE.EXPENSIFY_CARD]: { policyID: string; diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx index 95ad130fcfac..25d9cdcd973d 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -580,11 +580,8 @@ function ReportDetailsPage({policies, report, route, reportMetadata}: ReportDeta if (!report?.policyID) { return; } - if (isSmallScreenWidth) { - Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(report?.policyID)); - return; - } - Navigation.navigate(ROUTES.WORKSPACE_PROFILE.getRoute(report?.policyID)); + const activeRoute = Navigation.getActiveRoute(); + Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(report?.policyID, activeRoute)); }, isAnonymousAction: false, shouldShowRightIcon: true, @@ -663,7 +660,6 @@ function ReportDetailsPage({policies, report, route, reportMetadata}: ReportDeta isOffline, transactionIDList, unapproveExpenseReportOrShowModal, - isSmallScreenWidth, ]); const displayNamesWithTooltips = useMemo(() => { diff --git a/src/pages/workspace/WorkspaceInitialPage.tsx b/src/pages/workspace/WorkspaceInitialPage.tsx index af7a1c9d9189..47557cb51fce 100644 --- a/src/pages/workspace/WorkspaceInitialPage.tsx +++ b/src/pages/workspace/WorkspaceInitialPage.tsx @@ -449,7 +449,13 @@ function WorkspaceInitialPage({policyDraft, policy: policyProp, route}: Workspac > Navigation.goBack(ROUTES.SETTINGS_WORKSPACES)} + onBackButtonPress={() => { + if (route.params?.backTo) { + Navigation.goBack(route.params?.backTo); + return; + } + Navigation.goBack(ROUTES.SETTINGS_WORKSPACES); + }} policyAvatar={policyAvatar} style={styles.headerBarDesktopHeight} /> diff --git a/src/pages/workspace/WorkspaceProfilePage.tsx b/src/pages/workspace/WorkspaceProfilePage.tsx index b8fc7e6256b8..83aadd111940 100644 --- a/src/pages/workspace/WorkspaceProfilePage.tsx +++ b/src/pages/workspace/WorkspaceProfilePage.tsx @@ -50,6 +50,7 @@ function WorkspaceProfilePage({policyDraft, policy: policyProp, route}: Workspac const {canUseSpotnanaTravel} = usePermissions(); const {activeWorkspaceID, setActiveWorkspaceID} = useActiveWorkspace(); + const backTo = route.params.backTo; const [currencyList = {}] = useOnyx(ONYXKEYS.CURRENCY_LIST); const [currentUserAccountID = -1] = useOnyx(ONYXKEYS.SESSION, {selector: (session) => session?.accountID}); @@ -183,6 +184,13 @@ function WorkspaceProfilePage({policyDraft, policy: policyProp, route}: Workspac shouldShowNonAdmin icon={Illustrations.Building} shouldShowNotFoundPage={policy === undefined} + onBackButtonPress={() => { + if (backTo) { + Navigation.navigate(backTo); + return; + } + return Navigation.goBack(); + }} > {(hasVBA?: boolean) => (