From 113d584bbf37818e391b3d4e6516c739967cbaca Mon Sep 17 00:00:00 2001 From: daledah Date: Fri, 17 Jan 2025 01:54:22 +0700 Subject: [PATCH 1/5] fix: Workspace - Inconsistent back navigation when clicking app back button --- src/ROUTES.ts | 2 +- src/libs/Navigation/types.ts | 1 + src/pages/ReportDetailsPage.tsx | 5 +++-- src/pages/workspace/WorkspaceProfilePage.tsx | 8 ++++++++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index fa40bfad4e63..7813afe243b7 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -744,7 +744,7 @@ const ROUTES = { }, WORKSPACE_PROFILE: { route: 'settings/workspaces/:policyID/profile', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/profile` as const, + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/profile` as const, backTo), }, WORKSPACE_PROFILE_ADDRESS: { route: 'settings/workspaces/:policyID/profile/address', diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 088f624c7dc3..fd48ebc1b8a9 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1503,6 +1503,7 @@ type FullScreenNavigatorParamList = { }; [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 b48a90e88d95..d728a63e146b 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -507,11 +507,12 @@ function ReportDetailsPage({policies, report, route, reportMetadata}: ReportDeta if (!report?.policyID) { return; } + const activeRoute = Navigation.getActiveRoute(); if (isSmallScreenWidth) { - Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(report?.policyID)); + Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(report?.policyID, activeRoute)); return; } - Navigation.navigate(ROUTES.WORKSPACE_PROFILE.getRoute(report?.policyID)); + Navigation.navigate(ROUTES.WORKSPACE_PROFILE.getRoute(report?.policyID, activeRoute)); }, isAnonymousAction: false, shouldShowRightIcon: true, diff --git a/src/pages/workspace/WorkspaceProfilePage.tsx b/src/pages/workspace/WorkspaceProfilePage.tsx index b8e904c2b78b..b92602cb47b0 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 {activeWorkspaceID, setActiveWorkspaceID} = useActiveWorkspace(); const {canUseSpotnanaTravel} = usePermissions(); + const backTo = route.params.backTo; const [currencyList = {}] = useOnyx(ONYXKEYS.CURRENCY_LIST); const [currentUserAccountID = -1] = useOnyx(ONYXKEYS.SESSION, {selector: (session) => session?.accountID}); @@ -193,6 +194,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) => ( From 45be702d73d0c37ce91a5486daa6015ee7362af6 Mon Sep 17 00:00:00 2001 From: daledah Date: Mon, 3 Feb 2025 16:13:12 +0700 Subject: [PATCH 2/5] fix: remove resetToHome logic in WS Initial page --- src/pages/workspace/WorkspaceInitialPage.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/workspace/WorkspaceInitialPage.tsx b/src/pages/workspace/WorkspaceInitialPage.tsx index 642ab02f24f4..744d0f810daf 100644 --- a/src/pages/workspace/WorkspaceInitialPage.tsx +++ b/src/pages/workspace/WorkspaceInitialPage.tsx @@ -459,8 +459,7 @@ function WorkspaceInitialPage({policyDraft, policy: policyProp, route}: Workspac title={policyName} onBackButtonPress={() => { if (route.params?.backTo) { - Navigation.resetToHome(); - Navigation.isNavigationReady().then(() => Navigation.navigate(route.params?.backTo as Route)); + Navigation.isNavigationReady().then(() => Navigation.navigate(route.params?.backTo as Route, true)); } else { Navigation.dismissModal(); } From 6dcfe618873b196e2079b094043b2cff20f1cd57 Mon Sep 17 00:00:00 2001 From: daledah Date: Mon, 3 Feb 2025 16:29:29 +0700 Subject: [PATCH 3/5] fix: add resetToHome back, use or undefined instead of optional syntax --- src/ROUTES.ts | 2 +- src/pages/workspace/WorkspaceInitialPage.tsx | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index d7e0cd547107..e2f74fccd0d3 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -815,7 +815,7 @@ const ROUTES = { }, WORKSPACE_PROFILE: { route: 'settings/workspaces/:policyID/profile', - getRoute: (policyID: string | undefined, backTo?: string) => { + getRoute: (policyID: string | undefined, backTo: string | undefined) => { if (!policyID) { Log.warn('Invalid policyID is used to build the WORKSPACE_PROFILE route'); } diff --git a/src/pages/workspace/WorkspaceInitialPage.tsx b/src/pages/workspace/WorkspaceInitialPage.tsx index 744d0f810daf..642ab02f24f4 100644 --- a/src/pages/workspace/WorkspaceInitialPage.tsx +++ b/src/pages/workspace/WorkspaceInitialPage.tsx @@ -459,7 +459,8 @@ function WorkspaceInitialPage({policyDraft, policy: policyProp, route}: Workspac title={policyName} onBackButtonPress={() => { if (route.params?.backTo) { - Navigation.isNavigationReady().then(() => Navigation.navigate(route.params?.backTo as Route, true)); + Navigation.resetToHome(); + Navigation.isNavigationReady().then(() => Navigation.navigate(route.params?.backTo as Route)); } else { Navigation.dismissModal(); } From 1b06e56e40683432806ea190cd56d29ad6f41eda Mon Sep 17 00:00:00 2001 From: daledah Date: Tue, 4 Feb 2025 09:11:12 +0700 Subject: [PATCH 4/5] fix lint --- src/ROUTES.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index e2f74fccd0d3..d7e0cd547107 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -815,7 +815,7 @@ const ROUTES = { }, WORKSPACE_PROFILE: { route: 'settings/workspaces/:policyID/profile', - getRoute: (policyID: string | undefined, backTo: string | undefined) => { + getRoute: (policyID: string | undefined, backTo?: string) => { if (!policyID) { Log.warn('Invalid policyID is used to build the WORKSPACE_PROFILE route'); } From 18bcaf4cdd1f2f038452c341b522705e2564485f Mon Sep 17 00:00:00 2001 From: daledah Date: Fri, 14 Feb 2025 12:57:03 +0700 Subject: [PATCH 5/5] fix: repair navigation logics in workspace initial page --- src/libs/Navigation/types.ts | 1 + src/pages/ReportDetailsPage.tsx | 7 +------ src/pages/workspace/WorkspaceInitialPage.tsx | 8 +++++++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index ca3af422831f..958d02a6a71d 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1581,6 +1581,7 @@ type SettingsSplitNavigatorParamList = { type WorkspaceSplitNavigatorParamList = { [SCREENS.WORKSPACE.INITIAL]: { policyID: string; + backTo?: Routes; }; [SCREENS.WORKSPACE.PROFILE]: { policyID: string; diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx index 7ee6953ff25e..25d9cdcd973d 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -581,11 +581,7 @@ function ReportDetailsPage({policies, report, route, reportMetadata}: ReportDeta return; } const activeRoute = Navigation.getActiveRoute(); - if (isSmallScreenWidth) { - Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(report?.policyID, activeRoute)); - return; - } - Navigation.navigate(ROUTES.WORKSPACE_PROFILE.getRoute(report?.policyID, activeRoute)); + Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(report?.policyID, activeRoute)); }, isAnonymousAction: false, shouldShowRightIcon: true, @@ -664,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} />