diff --git a/src/ROUTES.ts b/src/ROUTES.ts index fc3391ae84cb..04ff92c1ff38 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -396,12 +396,17 @@ const DYNAMIC_ROUTES = { }, SETTINGS_CATEGORY_EDIT: { path: 'category-edit', - entryScreens: [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, SETTINGS_CATEGORIES_SETTINGS: { path: 'manage-settings', entryScreens: [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORIES_ROOT], }, + SETTINGS_CATEGORY_SETTINGS: { + path: 'category-settings/:categoryName', + entryScreens: [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORIES_ROOT], + getRoute: (categoryName: string) => `category-settings/${encodeURIComponent(categoryName)}` as const, + }, SETTINGS_CATEGORY_CREATE: { path: 'category-create', entryScreens: [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORIES_ROOT], @@ -417,39 +422,39 @@ const DYNAMIC_ROUTES = { }, WORKSPACE_CATEGORY_PAYROLL_CODE: { path: 'payroll-code', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_GL_CODE: { path: 'gl-code', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_DEFAULT_TAX_RATE: { path: 'tax-rate', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_FLAG_AMOUNTS_OVER: { path: 'flag-amounts', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_DESCRIPTION_HINT: { path: 'description-hint', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_REQUIRED_FIELDS: { path: 'required-fields', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_APPROVER: { path: 'approver', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_REQUIRE_RECEIPTS_OVER: { path: 'require-receipts-over', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, WORKSPACE_CATEGORY_REQUIRE_ITEMIZED_RECEIPTS_OVER: { path: 'require-itemized-receipts-over', - entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS], + entryScreens: [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_SETTINGS, SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS], }, NOTIFICATION_PREFERENCES: { path: 'notification-preferences', @@ -585,9 +590,13 @@ const DYNAMIC_ROUTES = { path: 'tag-new', entryScreens: [SCREENS.SETTINGS_TAGS.SETTINGS_TAGS_ROOT], }, + WORKSPACE_TAGS_SETTINGS: { + path: 'tags-settings', + entryScreens: [SCREENS.WORKSPACE.TAGS], + }, WORKSPACE_TAGS_EDIT: { path: 'tags-edit/:orderWeight', - entryScreens: [SCREENS.WORKSPACE.TAGS, SCREENS.WORKSPACE.TAGS_SETTINGS, SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAG_LIST_VIEW], + entryScreens: [SCREENS.WORKSPACE.TAGS, SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAGS_SETTINGS, SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAG_LIST_VIEW], getRoute: (orderWeight: number) => `tags-edit/${orderWeight}`, }, WORKSPACE_TAG_SETTINGS: { @@ -1785,11 +1794,6 @@ const ROUTES = { getRoute: (policyID: string, backTo = '') => getUrlWithBackToParam(`settings/${policyID}/categories`, backTo), }, - SETTINGS_CATEGORY_SETTINGS: { - route: 'settings/:policyID/category/:categoryName', - - getRoute: (policyID: string, categoryName: string, backTo = '') => getUrlWithBackToParam(`settings/${policyID}/category/${encodeURIComponent(categoryName)}`, backTo), - }, SETTINGS_CATEGORIES_IMPORT: { route: 'settings/:policyID/categories/import', @@ -2529,10 +2533,6 @@ const ROUTES = { return `workspaces/${policyID}/tags` as const; }, }, - WORKSPACE_TAGS_SETTINGS: { - route: 'workspaces/:policyID/tags/settings', - getRoute: (policyID: string) => `workspaces/${policyID}/tags/settings` as const, - }, WORKSPACE_TAGS_IMPORT: { route: 'workspaces/:policyID/tags/import', getRoute: (policyID: string) => `workspaces/${policyID}/tags/import` as const, diff --git a/src/SCREENS.ts b/src/SCREENS.ts index c67dbb2bf431..23fd53688105 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -449,7 +449,7 @@ const SCREENS = { }, SETTINGS_CATEGORIES: { - SETTINGS_CATEGORY_SETTINGS: 'Settings_Category_Settings', + DYNAMIC_SETTINGS_CATEGORY_SETTINGS: 'Dynamic_Settings_Category_Settings', DYNAMIC_SETTINGS_CATEGORIES_SETTINGS: 'Dynamic_Settings_Categories_Settings', DYNAMIC_SETTINGS_CATEGORY_CREATE: 'Dynamic_Settings_Category_Create', DYNAMIC_SETTINGS_CATEGORY_EDIT: 'Dynamic_Settings_Category_Edit', @@ -769,7 +769,7 @@ const SCREENS = { INVITE_MESSAGE_APPROVER: 'Workspace_Invite_Message_Approver', CATEGORIES: 'Workspace_Categories', TAGS: 'Workspace_Tags', - TAGS_SETTINGS: 'Tags_Settings', + DYNAMIC_WORKSPACE_TAGS_SETTINGS: 'Dynamic_Workspace_Tags_Settings', DYNAMIC_WORKSPACE_TAGS_EDIT: 'Dynamic_Workspace_Tags_Edit', TAGS_IMPORT: 'Tags_Import', TAGS_IMPORT_MULTI_LEVEL_SETTINGS: 'Tags_Import_Multi_Level_Settings', diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index e7a6c89b967a..4e2f0a28a120 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -343,7 +343,7 @@ const CategoriesModalStackNavigator = createModalStackNavigator({ require('../../../../pages/workspace/categories/DynamicWorkspaceCategoriesSettingsPage').default, [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_CREATE]: () => require('../../../../pages/workspace/categories/DynamicCreateCategoryPage').default, [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_EDIT]: () => require('../../../../pages/workspace/categories/DynamicEditCategoryPage').default, - [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS]: () => require('../../../../pages/workspace/categories/CategorySettingsPage').default, + [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS]: () => require('../../../../pages/workspace/categories/CategorySettingsPage').default, [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORIES_IMPORT]: () => require('../../../../pages/workspace/categories/ImportCategoriesPage').default, [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORIES_IMPORTED]: () => require('../../../../pages/workspace/categories/ImportedCategoriesPage').default, [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_PAYROLL_CODE]: () => require('../../../../pages/workspace/categories/CategoryPayrollCodePage').default, @@ -650,7 +650,7 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/tags/ImportMultiLevelTagsSettingsPage').default, [SCREENS.WORKSPACE.TAGS_IMPORTED]: () => require('../../../../pages/workspace/tags/ImportedTagsPage').default, [SCREENS.WORKSPACE.TAGS_IMPORTED_MULTI_LEVEL]: () => require('../../../../pages/workspace/tags/ImportedMultiLevelTagsPage').default, - [SCREENS.WORKSPACE.TAGS_SETTINGS]: () => require('../../../../pages/workspace/tags/WorkspaceTagsSettingsPage').default, + [SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAGS_SETTINGS]: () => require('../../../../pages/workspace/tags/WorkspaceTagsSettingsPage').default, [SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAG_SETTINGS]: () => require('../../../../pages/workspace/tags/DynamicTagSettingsPage').default, [SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAG_LIST_VIEW]: () => require('../../../../pages/workspace/tags/DynamicTagListViewPage').default, [SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAGS_EDIT]: () => require('../../../../pages/workspace/tags/DynamicEditTagsPage').default, diff --git a/src/libs/Navigation/linkingConfig/OldRoutes.ts b/src/libs/Navigation/linkingConfig/OldRoutes.ts index 110df22878ad..a011edf17c5e 100644 --- a/src/libs/Navigation/linkingConfig/OldRoutes.ts +++ b/src/libs/Navigation/linkingConfig/OldRoutes.ts @@ -1,6 +1,7 @@ const oldRoutes: Record = { /* eslint-disable @typescript-eslint/naming-convention */ - '/settings/*/category/*/edit': '/settings/$1/category/$2/category-edit', + '/settings/*/category/*/edit': '/settings/$1/categories/category-settings/$2/category-edit', + '/settings/*/category/*': '/settings/$1/categories/category-settings/$2', '/settings/*/tags/*/edit': '/settings/$1/tags/settings/edit/$2', '/settings/*/tags/new': '/settings/$1/tags/tag-new', '/settings/*/tag/*/*/edit': '/settings/$1/tags/tag-settings/$2/$3/tag-edit/$2/$3', @@ -12,6 +13,7 @@ const oldRoutes: Record = { '/workspaces/*/category/*': '/workspaces/$1/categories/category/$2', '/workspaces/*/tag-list/*': '/workspaces/$1/tags/workspace-tag-list/$2', '/workspaces/*/tags/tag-list/*': '/workspaces/$1/tags/workspace-tag-list/$2', + '/workspaces/*/tags/settings': '/workspaces/$1/tags/tags-settings', '/workspaces/*/tags/new': '/workspaces/$1/tags/tags/new', '/workspaces/*/tags/*/edit': '/workspaces/$1/tags/tags-edit/$2', '/workspaces/*/tag/*/*/edit': '/workspaces/$1/tags/tag/$2/$3/tag-edit', diff --git a/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts index dc272cf1f4c9..209b13855d61 100755 --- a/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts +++ b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts @@ -196,7 +196,7 @@ const WORKSPACE_TO_RHP: Partial['config'] = { [SCREENS.WORKSPACE.DISTANCE_RATE_TAX_RATE_EDIT]: { path: ROUTES.WORKSPACE_DISTANCE_RATE_TAX_RATE_EDIT.route, }, - [SCREENS.WORKSPACE.TAGS_SETTINGS]: { - path: ROUTES.WORKSPACE_TAGS_SETTINGS.route, - }, + [SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAGS_SETTINGS]: DYNAMIC_ROUTES.WORKSPACE_TAGS_SETTINGS.path, [SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAGS_EDIT]: DYNAMIC_ROUTES.WORKSPACE_TAGS_EDIT.path, [SCREENS.WORKSPACE.TAGS_IMPORT]: { path: ROUTES.WORKSPACE_TAGS_IMPORT.route, @@ -1492,9 +1490,7 @@ const config: LinkingOptions['config'] = { }, [SCREENS.RIGHT_MODAL.SETTINGS_CATEGORIES]: { screens: { - [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS]: { - path: ROUTES.SETTINGS_CATEGORY_SETTINGS.route, - }, + [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS]: DYNAMIC_ROUTES.SETTINGS_CATEGORY_SETTINGS.path, [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORIES_SETTINGS]: DYNAMIC_ROUTES.SETTINGS_CATEGORIES_SETTINGS.path, [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_CREATE]: DYNAMIC_ROUTES.SETTINGS_CATEGORY_CREATE.path, [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_EDIT]: DYNAMIC_ROUTES.SETTINGS_CATEGORY_EDIT.path, diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 27f6bf43c0f4..c99bb7579985 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -411,11 +411,9 @@ type SettingsNavigatorParamList = { policyID: string; categoryName: string; }; - [SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS]: { + [SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS]: { policyID: string; categoryName: string; - // eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md - backTo?: Routes; }; [SCREENS.WORKSPACE.DYNAMIC_CATEGORY_REQUIRED_FIELDS]: { policyID: string; @@ -492,7 +490,7 @@ type SettingsNavigatorParamList = { policyID: string; rateID: string; }; - [SCREENS.WORKSPACE.TAGS_SETTINGS]: { + [SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_TAGS_SETTINGS]: { policyID: string; // eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md backTo?: Routes; diff --git a/src/pages/workspace/categories/CategoryGLCodePage.tsx b/src/pages/workspace/categories/CategoryGLCodePage.tsx index dce6d5e01b61..02ca611c33c1 100644 --- a/src/pages/workspace/categories/CategoryGLCodePage.tsx +++ b/src/pages/workspace/categories/CategoryGLCodePage.tsx @@ -17,7 +17,7 @@ import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; import {setPolicyCategoryGLCode} from '@userActions/Policy/Category'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES'; +import {DYNAMIC_ROUTES} from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; import INPUT_IDS from '@src/types/form/WorkspaceCategoryForm'; @@ -29,13 +29,11 @@ function CategoryGLCodePage({route}: EditCategoryPageProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const policyID = route.params.policyID; - const backTo = 'backTo' in route.params ? route.params.backTo : undefined; const [policyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policyID}`); const categoryName = route.params.categoryName; const glCode = policyCategories?.[categoryName]?.['GL Code']; const {inputCallbackRef} = useAutoFocusInput(); - const isQuickSettingsFlow = route.name === SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_GL_CODE; const workspaceBackPath = useDynamicBackPath(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_GL_CODE.path); const validate = useCallback( @@ -58,9 +56,9 @@ function CategoryGLCodePage({route}: EditCategoryPageProps) { if (newGLCode !== glCode) { setPolicyCategoryGLCode(policyID, categoryName, newGLCode, policyCategories); } - Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_CATEGORY_SETTINGS.getRoute(policyID, categoryName, backTo) : workspaceBackPath); + Navigation.goBack(workspaceBackPath); }, - [glCode, isQuickSettingsFlow, policyID, categoryName, backTo, policyCategories, workspaceBackPath], + [glCode, policyID, categoryName, policyCategories, workspaceBackPath], ); return ( @@ -77,9 +75,7 @@ function CategoryGLCodePage({route}: EditCategoryPageProps) { > - Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_CATEGORY_SETTINGS.getRoute(route.params.policyID, route.params.categoryName, backTo) : workspaceBackPath) - } + onBackButtonPress={() => Navigation.goBack(workspaceBackPath)} /> - Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_CATEGORY_SETTINGS.getRoute(route.params.policyID, categoryName, backTo) : workspaceBackPath) - } + onBackButtonPress={() => Navigation.goBack(workspaceBackPath)} /> - | PlatformStackScreenProps; + | PlatformStackScreenProps; function CategorySettingsPage({route: {params, name}, navigation}: CategorySettingsPageProps) { const {policyID, categoryName} = params; - const backTo = 'backTo' in params ? params.backTo : undefined; const styles = useThemeStyles(); const {translate, formatPhoneNumber} = useLocalize(); const {convertToDisplayString} = useCurrencyListActions(); @@ -68,7 +68,8 @@ function CategorySettingsPage({route: {params, name}, navigation}: CategorySetti const decodedCategoryName = getDecodedCategoryName(policyCategory?.name ?? ''); const shouldPreventDisableOrDelete = isDisablingOrDeletingLastEnabledCategory(policy, policyData.categories, [policyCategory]); - const isQuickSettingsFlow = name === SCREENS.SETTINGS_CATEGORIES.SETTINGS_CATEGORY_SETTINGS; + const isQuickSettingsFlow = name === SCREENS.SETTINGS_CATEGORIES.DYNAMIC_SETTINGS_CATEGORY_SETTINGS; + const backPath = useDynamicBackPath(isQuickSettingsFlow ? DYNAMIC_ROUTES.SETTINGS_CATEGORY_SETTINGS.path : DYNAMIC_ROUTES.WORKSPACE_CATEGORY_SETTINGS.path); const { taskReport: setupCategoryTaskReport, taskParentReport: setupCategoryTaskParentReport, @@ -90,7 +91,7 @@ function CategorySettingsPage({route: {params, name}, navigation}: CategorySetti const policyHasTags = hasTags(policyTags); const navigateBack = () => { - Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_CATEGORIES_ROOT.getRoute(policyID, backTo) : undefined); + Navigation.goBack(backPath); }; const isFocused = useIsFocused(); @@ -300,22 +301,11 @@ function CategorySettingsPage({route: {params, name}, navigation}: CategorySetti description={translate('workspace.categories.glCode')} onPress={() => { if (!isControlPolicy(policy)) { - Navigation.navigate( - ROUTES.WORKSPACE_UPGRADE.getRoute( - policyID, - CONST.UPGRADE_FEATURE_INTRO_MAPPING.glAndPayrollCodes.alias, - isQuickSettingsFlow - ? ROUTES.SETTINGS_CATEGORY_GL_CODE.getRoute(policyID, policyCategory.name, backTo) - : createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_GL_CODE.path), - ), - ); + const glCodeRoute = createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_GL_CODE.path); + Navigation.navigate(ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.glAndPayrollCodes.alias, glCodeRoute)); return; } - Navigation.navigate( - isQuickSettingsFlow - ? ROUTES.SETTINGS_CATEGORY_GL_CODE.getRoute(policyID, policyCategory.name, backTo) - : createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_GL_CODE.path), - ); + Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_GL_CODE.path)); }} shouldShowRightIcon /> @@ -335,11 +325,7 @@ function CategorySettingsPage({route: {params, name}, navigation}: CategorySetti ); return; } - Navigation.navigate( - isQuickSettingsFlow - ? ROUTES.SETTINGS_CATEGORY_PAYROLL_CODE.getRoute(policyID, policyCategory.name, backTo) - : createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_PAYROLL_CODE.path), - ); + Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_PAYROLL_CODE.path)); }} shouldShowRightIcon /> diff --git a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx index 9ae95d557c73..92a998d4ee46 100644 --- a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx +++ b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx @@ -398,7 +398,7 @@ function WorkspaceCategoriesPage({route}: WorkspaceCategoriesPageProps) { } Navigation.navigate( isQuickSettingsFlow - ? ROUTES.SETTINGS_CATEGORY_SETTINGS.getRoute(policyId, category.keyForList, backTo) + ? createDynamicRoute(DYNAMIC_ROUTES.SETTINGS_CATEGORY_SETTINGS.getRoute(category.keyForList)) : createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_CATEGORY_SETTINGS.getRoute(category.keyForList)), ); }; diff --git a/src/pages/workspace/tags/WorkspaceTagsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsPage.tsx index b20818c59789..fb4e2aed6ad8 100644 --- a/src/pages/workspace/tags/WorkspaceTagsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsPage.tsx @@ -473,7 +473,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) { }; const navigateToTagsSettings = useCallback(() => { - Navigation.navigate(isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_SETTINGS.getRoute(policyID, backTo) : ROUTES.WORKSPACE_TAGS_SETTINGS.getRoute(policyID)); + Navigation.navigate(isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_SETTINGS.getRoute(policyID, backTo) : createDynamicRoute(DYNAMIC_ROUTES.WORKSPACE_TAGS_SETTINGS.path)); }, [isQuickSettingsFlow, policyID, backTo]); const navigateToCreateTagPage = () => { diff --git a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx index 78f99876b874..0e0c04495807 100644 --- a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx @@ -8,6 +8,7 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; import Switch from '@components/Switch'; import Text from '@components/Text'; +import useDynamicBackPath from '@hooks/useDynamicBackPath'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import usePolicyData from '@hooks/usePolicyData'; @@ -27,7 +28,7 @@ import SCREENS from '@src/SCREENS'; import type {Policy} from '@src/types/onyx'; type WorkspaceTagsSettingsPageProps = - | PlatformStackScreenProps + | PlatformStackScreenProps | PlatformStackScreenProps; /** @@ -54,6 +55,7 @@ function WorkspaceTagsSettingsPage({route}: WorkspaceTagsSettingsPageProps) { const policyID = route.params.policyID; const backTo = route.params.backTo; const styles = useThemeStyles(); + const backPath = useDynamicBackPath(DYNAMIC_ROUTES.WORKSPACE_TAGS_SETTINGS.path); const policyData = usePolicyData(policyID); const {tags: policyTags} = policyData; const {translate} = useLocalize(); @@ -146,7 +148,7 @@ function WorkspaceTagsSettingsPage({route}: WorkspaceTagsSettingsPageProps) { > Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo) : undefined)} + onBackButtonPress={() => Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo) : backPath)} /> {isOffline && isLoading ? {getTagsSettings(policy)} : getTagsSettings(policy)} diff --git a/tests/navigation/getMatchingNewRouteTest.ts b/tests/navigation/getMatchingNewRouteTest.ts index c48ef2a46faa..109b1039b48d 100644 --- a/tests/navigation/getMatchingNewRouteTest.ts +++ b/tests/navigation/getMatchingNewRouteTest.ts @@ -87,11 +87,19 @@ describe('getBestMatchingPath', () => { ); }); it('redirects old settings category edit path to the new dynamic suffix shape', () => { - expect(getMatchingNewRoute('/settings/abc/category/Meals/edit')).toBe('/settings/abc/category/Meals/category-edit'); + expect(getMatchingNewRoute('/settings/abc/category/Meals/edit')).toBe('/settings/abc/categories/category-settings/Meals/category-edit'); }); it('preserves query params when redirecting old settings category edit path', () => { - expect(getMatchingNewRoute('/settings/abc/category/Meals/edit?backTo=/home')).toBe('/settings/abc/category/Meals/category-edit?backTo=/home'); + expect(getMatchingNewRoute('/settings/abc/category/Meals/edit?backTo=/home')).toBe('/settings/abc/categories/category-settings/Meals/category-edit?backTo=/home'); + }); + + it('redirects old settings category details path to dynamic category settings path', () => { + expect(getMatchingNewRoute('/settings/abc/category/Meals')).toBe('/settings/abc/categories/category-settings/Meals'); + }); + + it('preserves query params when redirecting old settings category details path', () => { + expect(getMatchingNewRoute('/settings/abc/category/Meals?backTo=/home')).toBe('/settings/abc/categories/category-settings/Meals?backTo=/home'); }); it('redirects old settings tag routes to the new dynamic suffix shape', () => { @@ -107,6 +115,10 @@ describe('getBestMatchingPath', () => { expect(getMatchingNewRoute('/settings/p123/tag/10/Meals?parentTagsFilter=Food')).toBe('/settings/p123/tags/tag-settings/10/Meals?parentTagsFilter=Food'); }); + it('redirects old workspace tags settings route to the new dynamic suffix shape', () => { + expect(getMatchingNewRoute('/workspaces/123/tags/settings')).toBe('/workspaces/123/tags/tags-settings'); + }); + it('redirects old flag comment path to report-based dynamic route', () => { expect(getMatchingNewRoute('/flag/123/456')).toBe('/r/123/flag/123/456'); });