diff --git a/src/ROUTES.ts b/src/ROUTES.ts index ed498c474099..346e761d517f 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -2150,15 +2150,11 @@ const ROUTES = { }, WORKSPACE_DUPLICATE: { route: 'workspace/:policyID/duplicate', - - // eslint-disable-next-line no-restricted-syntax -- Legacy route generation - getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspace/${policyID}/duplicate`, backTo), + getRoute: (policyID: string) => `workspace/${policyID}/duplicate` as const, }, WORKSPACE_DUPLICATE_SELECT_FEATURES: { route: 'workspace/:policyID/duplicate/select-features', - - // eslint-disable-next-line no-restricted-syntax -- Legacy route generation - getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspace/${policyID}/duplicate/select-features`, backTo), + getRoute: (policyID: string) => `workspace/${policyID}/duplicate/select-features` as const, }, WORKSPACE_RECEIPT_PARTNERS: { route: 'workspaces/:policyID/receipt-partners', diff --git a/src/libs/Navigation/helpers/getAdaptedStateFromPath.ts b/src/libs/Navigation/helpers/getAdaptedStateFromPath.ts index faf5e5f2632c..683ab77d84dc 100644 --- a/src/libs/Navigation/helpers/getAdaptedStateFromPath.ts +++ b/src/libs/Navigation/helpers/getAdaptedStateFromPath.ts @@ -5,11 +5,12 @@ import type {OnyxCollection} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import getInitialSplitNavigatorState from '@libs/Navigation/AppNavigator/createSplitNavigator/getInitialSplitNavigatorState'; import {config} from '@libs/Navigation/linkingConfig/config'; -import {RHP_TO_SEARCH, RHP_TO_SETTINGS, RHP_TO_SIDEBAR, RHP_TO_WORKSPACE} from '@libs/Navigation/linkingConfig/RELATIONS'; +import {RHP_TO_SEARCH, RHP_TO_SETTINGS, RHP_TO_SIDEBAR, RHP_TO_WORKSPACE, RHP_TO_WORKSPACES_LIST} from '@libs/Navigation/linkingConfig/RELATIONS'; import type {NavigationPartialRoute, RootNavigatorParamList} from '@libs/Navigation/types'; import CONST from '@src/CONST'; import NAVIGATORS from '@src/NAVIGATORS'; import ONYXKEYS from '@src/ONYXKEYS'; +import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; import type {Report} from '@src/types/onyx'; import getMatchingNewRoute from './getMatchingNewRoute'; @@ -86,6 +87,13 @@ function getMatchingFullScreenRoute(route: NavigationPartialRoute) { }); } + if (RHP_TO_WORKSPACES_LIST[route.name]) { + return { + name: SCREENS.WORKSPACES_LIST, + path: ROUTES.WORKSPACES_LIST.route, + }; + } + if (RHP_TO_WORKSPACE[route.name]) { const paramsFromRoute = getParamsFromRoute(RHP_TO_WORKSPACE[route.name]); diff --git a/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACES_LIST_TO_RHP.ts b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACES_LIST_TO_RHP.ts new file mode 100644 index 000000000000..b920487f1d14 --- /dev/null +++ b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACES_LIST_TO_RHP.ts @@ -0,0 +1,8 @@ +import type {WorkspaceDuplicateNavigatorParamList} from '@navigation/types'; +import SCREENS from '@src/SCREENS'; + +const WORKSPACES_LIST_TO_RHP: Partial> = { + [SCREENS.WORKSPACE_DUPLICATE.ROOT]: [SCREENS.WORKSPACE_DUPLICATE.SELECT_FEATURES, SCREENS.WORKSPACE_DUPLICATE.ROOT], +}; + +export default WORKSPACES_LIST_TO_RHP; diff --git a/src/libs/Navigation/linkingConfig/RELATIONS/index.ts b/src/libs/Navigation/linkingConfig/RELATIONS/index.ts index b230faf5aecb..6ac7811ee3cf 100644 --- a/src/libs/Navigation/linkingConfig/RELATIONS/index.ts +++ b/src/libs/Navigation/linkingConfig/RELATIONS/index.ts @@ -4,6 +4,7 @@ import SIDEBAR_TO_RHP from './SIDEBAR_TO_RHP'; import SIDEBAR_TO_SPLIT from './SIDEBAR_TO_SPLIT'; import TAB_TO_FULLSCREEN from './TAB_TO_FULLSCREEN'; import WORKSPACE_TO_RHP from './WORKSPACE_TO_RHP'; +import WORKSPACES_LIST_TO_RHP from './WORKSPACES_LIST_TO_RHP'; /** * This module manages the relationships between different fullscreen navigators and screens in the app. @@ -29,6 +30,7 @@ const RHP_TO_SETTINGS = createInverseRelation(SETTINGS_TO_RHP); const RHP_TO_WORKSPACE = createInverseRelation(WORKSPACE_TO_RHP); const RHP_TO_SIDEBAR = createInverseRelation(SIDEBAR_TO_RHP); const SPLIT_TO_SIDEBAR = createInverseRelation(SIDEBAR_TO_SPLIT); +const RHP_TO_WORKSPACES_LIST = createInverseRelation(WORKSPACES_LIST_TO_RHP); const RHP_TO_SEARCH = createInverseRelation(SEARCH_TO_RHP); const FULLSCREEN_TO_TAB = createInverseRelation(TAB_TO_FULLSCREEN); @@ -45,4 +47,5 @@ export { SPLIT_TO_SIDEBAR, TAB_TO_FULLSCREEN, FULLSCREEN_TO_TAB, + RHP_TO_WORKSPACES_LIST, }; diff --git a/src/pages/workspace/WorkspacesListPage.tsx b/src/pages/workspace/WorkspacesListPage.tsx index d39d52c5a9ca..09ff4ce3068b 100755 --- a/src/pages/workspace/WorkspacesListPage.tsx +++ b/src/pages/workspace/WorkspacesListPage.tsx @@ -223,7 +223,7 @@ function WorkspacesListPage() { threeDotsMenuItems.push({ icon: Expensicons.Copy, text: translate('workspace.common.duplicateWorkspace'), - onSelected: () => (item.policyID ? Navigation.navigate(ROUTES.WORKSPACE_DUPLICATE.getRoute(item.policyID, ROUTES.WORKSPACES_LIST.route)) : undefined), + onSelected: () => (item.policyID ? Navigation.navigate(ROUTES.WORKSPACE_DUPLICATE.getRoute(item.policyID)) : undefined), }); } diff --git a/src/pages/workspace/duplicate/WorkspaceDuplicateForm.tsx b/src/pages/workspace/duplicate/WorkspaceDuplicateForm.tsx index 3b19e8101c1d..d80824bcba8f 100644 --- a/src/pages/workspace/duplicate/WorkspaceDuplicateForm.tsx +++ b/src/pages/workspace/duplicate/WorkspaceDuplicateForm.tsx @@ -62,7 +62,7 @@ function WorkspaceDuplicateForm({policyID}: WorkspaceDuplicateFormProps) { } const newPolicyID = generatePolicyID(); setDuplicateWorkspaceData({policyID: newPolicyID, name, file: avatarFile}); - Navigation.navigate(ROUTES.WORKSPACE_DUPLICATE_SELECT_FEATURES.getRoute(policyID, ROUTES.WORKSPACES_LIST.route)); + Navigation.navigate(ROUTES.WORKSPACE_DUPLICATE_SELECT_FEATURES.getRoute(policyID)); }, [policyID], ); diff --git a/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx b/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx index 8c5e34df83aa..c1ef70356ade 100644 --- a/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx +++ b/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx @@ -310,7 +310,7 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm return ( <> Navigation.goBack(ROUTES.WORKSPACE_DUPLICATE.getRoute(policyID, ROUTES.WORKSPACES_LIST.route)) : undefined} + onBackButtonPress={policyID ? () => Navigation.goBack(ROUTES.WORKSPACE_DUPLICATE.getRoute(policyID)) : undefined} title={translate('workspace.common.duplicateWorkspace')} /> <>