Skip to content

Commit ba89909

Browse files
authored
Merge pull request #46939 from nkdengineer/fix/46816
fix: inconsistent Navigation After Creating Workspace
2 parents 1eef411 + 7a6f7bc commit ba89909

File tree

5 files changed

+17
-5
lines changed

5 files changed

+17
-5
lines changed

src/ROUTES.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ const ROUTES = {
525525
WORKSPACE_NEW_ROOM: 'workspace/new-room',
526526
WORKSPACE_INITIAL: {
527527
route: 'settings/workspaces/:policyID',
528-
getRoute: (policyID: string) => `settings/workspaces/${policyID}` as const,
528+
getRoute: (policyID: string, backTo?: string) => `${getUrlWithBackToParam(`settings/workspaces/${policyID}`, backTo)}` as const,
529529
},
530530
WORKSPACE_INVITE: {
531531
route: 'settings/workspaces/:policyID/invite',

src/libs/Navigation/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,6 +1108,7 @@ type TravelNavigatorParamList = {
11081108
type FullScreenNavigatorParamList = {
11091109
[SCREENS.WORKSPACE.INITIAL]: {
11101110
policyID: string;
1111+
backTo?: string;
11111112
};
11121113
[SCREENS.WORKSPACE.PROFILE]: {
11131114
policyID: string;

src/libs/actions/App.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,9 @@ function endSignOnTransition() {
350350
* @param [policyName] Optional, custom policy name we will use for created workspace
351351
* @param [transitionFromOldDot] Optional, if the user is transitioning from old dot
352352
* @param [makeMeAdmin] Optional, leave the calling account as an admin on the policy
353+
* @param [backTo] An optional return path. If provided, it will be URL-encoded and appended to the resulting URL.
353354
*/
354-
function createWorkspaceWithPolicyDraftAndNavigateToIt(policyOwnerEmail = '', policyName = '', transitionFromOldDot = false, makeMeAdmin = false) {
355+
function createWorkspaceWithPolicyDraftAndNavigateToIt(policyOwnerEmail = '', policyName = '', transitionFromOldDot = false, makeMeAdmin = false, backTo = '') {
355356
const policyID = Policy.generatePolicyID();
356357
Policy.createDraftInitialWorkspace(policyOwnerEmail, policyName, policyID, makeMeAdmin);
357358

@@ -361,7 +362,7 @@ function createWorkspaceWithPolicyDraftAndNavigateToIt(policyOwnerEmail = '', po
361362
// We must call goBack() to remove the /transition route from history
362363
Navigation.goBack();
363364
}
364-
Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(policyID));
365+
Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(policyID, backTo));
365366
})
366367
.then(endSignOnTransition);
367368
}

src/pages/WorkspaceSwitcherPage/WorkspacesSectionHeader.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import useLocalize from '@hooks/useLocalize';
99
import useTheme from '@hooks/useTheme';
1010
import useThemeStyles from '@hooks/useThemeStyles';
1111
import interceptAnonymousUser from '@libs/interceptAnonymousUser';
12+
import Navigation from '@libs/Navigation/Navigation';
1213
import * as App from '@userActions/App';
1314
import CONST from '@src/CONST';
1415

@@ -32,7 +33,8 @@ function WorkspacesSectionHeader() {
3233
accessible={false}
3334
role={CONST.ROLE.BUTTON}
3435
onPress={() => {
35-
interceptAnonymousUser(() => App.createWorkspaceWithPolicyDraftAndNavigateToIt());
36+
const activeRoute = Navigation.getActiveRouteWithoutParams();
37+
interceptAnonymousUser(() => App.createWorkspaceWithPolicyDraftAndNavigateToIt('', '', false, false, activeRoute));
3638
}}
3739
>
3840
{({hovered}) => (

src/pages/workspace/WorkspaceInitialPage.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import * as ReimbursementAccount from '@userActions/ReimbursementAccount';
3131
import CONST from '@src/CONST';
3232
import type {TranslationPaths} from '@src/languages/types';
3333
import ONYXKEYS from '@src/ONYXKEYS';
34+
import type {Route} from '@src/ROUTES';
3435
import ROUTES from '@src/ROUTES';
3536
import SCREENS from '@src/SCREENS';
3637
import type * as OnyxTypes from '@src/types/onyx';
@@ -393,7 +394,14 @@ function WorkspaceInitialPage({policyDraft, policy: policyProp, reimbursementAcc
393394
>
394395
<HeaderWithBackButton
395396
title={policyName}
396-
onBackButtonPress={Navigation.dismissModal}
397+
onBackButtonPress={() => {
398+
if (route.params?.backTo) {
399+
Navigation.resetToHome();
400+
Navigation.isNavigationReady().then(() => Navigation.navigate(route.params?.backTo as Route));
401+
} else {
402+
Navigation.dismissModal();
403+
}
404+
}}
397405
policyAvatar={policyAvatar}
398406
style={styles.headerBarDesktopHeight}
399407
/>

0 commit comments

Comments
 (0)