diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 23188706a6e21..e86fa3887ed7f 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -99,6 +99,10 @@ const DYNAMIC_ROUTES = { path: 'owner-selector', entryScreens: [], }, + REPORT_SETTINGS_VISIBILITY: { + path: 'visibility', + entryScreens: [SCREENS.REPORT_SETTINGS.ROOT], + }, ADDRESS_COUNTRY: { path: 'country', entryScreens: [ @@ -810,12 +814,6 @@ const ROUTES = { // eslint-disable-next-line no-restricted-syntax -- Legacy route generation getRoute: (reportID: string, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/settings/who-can-post` as const, backTo), }, - REPORT_SETTINGS_VISIBILITY: { - route: 'r/:reportID/settings/visibility', - - // eslint-disable-next-line no-restricted-syntax -- Legacy route generation - getRoute: (reportID: string, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/settings/visibility` as const, backTo), - }, REPORT_CHANGE_APPROVER: { route: 'r/:reportID/change-approver', diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 6c2599a91dc50..7ebd0d3e60517 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -446,7 +446,7 @@ const SCREENS = { NAME: 'Report_Settings_Name', NOTIFICATION_PREFERENCES: 'Report_Settings_Notification_Preferences', WRITE_CAPABILITY: 'Report_Settings_Write_Capability', - VISIBILITY: 'Report_Settings_Visibility', + DYNAMIC_SETTINGS_VISIBILITY: 'Dynamic_Report_Settings_Visibility', REPORT_LAYOUT: 'Report_Settings_Report_Layout', COLUMNS: 'Report_Settings_Columns', }, diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 30d5ba47887e8..8adb81a3ccfb3 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -280,7 +280,7 @@ const ReportSettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/settings/Report/NamePage').default, [SCREENS.REPORT_SETTINGS.NOTIFICATION_PREFERENCES]: () => require('../../../../pages/settings/Report/NotificationPreferencePage').default, [SCREENS.REPORT_SETTINGS.WRITE_CAPABILITY]: () => require('../../../../pages/settings/Report/WriteCapabilityPage').default, - [SCREENS.REPORT_SETTINGS.VISIBILITY]: () => require('../../../../pages/settings/Report/VisibilityPage').default, + [SCREENS.REPORT_SETTINGS.DYNAMIC_SETTINGS_VISIBILITY]: () => require('../../../../pages/settings/Report/DynamicVisibilityPage').default, [SCREENS.REPORT_SETTINGS.REPORT_LAYOUT]: () => require('../../../../pages/settings/Report/ReportLayoutPage').default, [SCREENS.REPORT_SETTINGS.COLUMNS]: () => require('../../../../pages/settings/Report/ReportDetailsColumnsPage').default, }); diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index b533a716fbef8..b82e7e8e6e9d5 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -1405,9 +1405,7 @@ const config: LinkingOptions['config'] = { [SCREENS.REPORT_SETTINGS.WRITE_CAPABILITY]: { path: ROUTES.REPORT_SETTINGS_WRITE_CAPABILITY.route, }, - [SCREENS.REPORT_SETTINGS.VISIBILITY]: { - path: ROUTES.REPORT_SETTINGS_VISIBILITY.route, - }, + [SCREENS.REPORT_SETTINGS.DYNAMIC_SETTINGS_VISIBILITY]: DYNAMIC_ROUTES.REPORT_SETTINGS_VISIBILITY.path, [SCREENS.REPORT_SETTINGS.REPORT_LAYOUT]: { path: ROUTES.REPORT_SETTINGS_REPORT_LAYOUT.route, }, diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 072269fe167f3..955a794d0df79 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1698,10 +1698,8 @@ type ReportSettingsNavigatorParamList = { // 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.REPORT_SETTINGS.VISIBILITY]: { + [SCREENS.REPORT_SETTINGS.DYNAMIC_SETTINGS_VISIBILITY]: { reportID: 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.REPORT_SETTINGS.REPORT_LAYOUT]: { reportID: string; diff --git a/src/pages/inbox/report/withReportOrNotFound.tsx b/src/pages/inbox/report/withReportOrNotFound.tsx index 1a701c21fc2bc..8a2e9aecb8be0 100644 --- a/src/pages/inbox/report/withReportOrNotFound.tsx +++ b/src/pages/inbox/report/withReportOrNotFound.tsx @@ -53,6 +53,7 @@ type ScreenProps = | PlatformStackScreenProps | PlatformStackScreenProps | PlatformStackScreenProps + | PlatformStackScreenProps | PlatformStackScreenProps | PlatformStackScreenProps | PlatformStackScreenProps; diff --git a/src/pages/settings/Report/VisibilityPage.tsx b/src/pages/settings/Report/DynamicVisibilityPage.tsx similarity index 82% rename from src/pages/settings/Report/VisibilityPage.tsx rename to src/pages/settings/Report/DynamicVisibilityPage.tsx index 4cbbe57f3ab6c..1edc72dd93f54 100644 --- a/src/pages/settings/Report/VisibilityPage.tsx +++ b/src/pages/settings/Report/DynamicVisibilityPage.tsx @@ -1,4 +1,3 @@ -import {useRoute} from '@react-navigation/native'; import React, {useMemo} from 'react'; import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; @@ -7,26 +6,26 @@ import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/ListItem/RadioListItem'; import useConfirmModal from '@hooks/useConfirmModal'; +import useDynamicBackPath from '@hooks/useDynamicBackPath'; import useLocalize from '@hooks/useLocalize'; import useReportIsArchived from '@hooks/useReportIsArchived'; import setNavigationActionToMicrotaskQueue from '@libs/Navigation/helpers/setNavigationActionToMicrotaskQueue'; -import type {PlatformStackRouteProp, PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import type {ReportSettingsNavigatorParamList} from '@libs/Navigation/types'; -import {goBackToDetailsPage, isArchivedNonExpenseReport} from '@libs/ReportUtils'; +import Navigation from '@libs/Navigation/Navigation'; +import {isArchivedNonExpenseReport} from '@libs/ReportUtils'; import type {WithReportOrNotFoundProps} from '@pages/inbox/report/withReportOrNotFound'; import withReportOrNotFound from '@pages/inbox/report/withReportOrNotFound'; import {updateRoomVisibility} from '@userActions/Report'; import CONST from '@src/CONST'; -import type SCREENS from '@src/SCREENS'; +import {DYNAMIC_ROUTES} from '@src/ROUTES'; import type {RoomVisibility} from '@src/types/onyx/Report'; -type VisibilityProps = WithReportOrNotFoundProps & PlatformStackScreenProps; +type DynamicVisibilityProps = WithReportOrNotFoundProps; -function VisibilityPage({report}: VisibilityProps) { - const route = useRoute>(); +function DynamicVisibilityPage({report}: DynamicVisibilityProps) { const isReportArchived = useReportIsArchived(report?.reportID); const shouldDisableVisibility = isArchivedNonExpenseReport(report, isReportArchived); const {translate} = useLocalize(); + const backPath = useDynamicBackPath(DYNAMIC_ROUTES.REPORT_SETTINGS_VISIBILITY.path); const {showConfirmModal} = useConfirmModal(); @@ -45,7 +44,7 @@ function VisibilityPage({report}: VisibilityProps) { ); const goBack = () => { - goBackToDetailsPage(report, route.params.backTo); + Navigation.goBack(backPath); }; const changeVisibility = (newVisibility: RoomVisibility) => { @@ -100,4 +99,4 @@ function VisibilityPage({report}: VisibilityProps) { ); } -export default withReportOrNotFound()(VisibilityPage); +export default withReportOrNotFound()(DynamicVisibilityPage); diff --git a/src/pages/settings/Report/ReportSettingsPage.tsx b/src/pages/settings/Report/ReportSettingsPage.tsx index bfa7608ae2fbb..a1afbbb319ead 100644 --- a/src/pages/settings/Report/ReportSettingsPage.tsx +++ b/src/pages/settings/Report/ReportSettingsPage.tsx @@ -9,6 +9,7 @@ import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useReportIsArchived from '@hooks/useReportIsArchived'; import useThemeStyles from '@hooks/useThemeStyles'; +import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import { @@ -25,7 +26,7 @@ import type {ReportSettingsNavigatorParamList} from '@navigation/types'; import withReportOrNotFound from '@pages/inbox/report/withReportOrNotFound'; import type {WithReportOrNotFoundProps} from '@pages/inbox/report/withReportOrNotFound'; import CONST from '@src/CONST'; -import ROUTES from '@src/ROUTES'; +import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; @@ -103,7 +104,9 @@ function ReportSettingsPage({report, policy, route}: ReportSettingsPageProps) { shouldShowRightIcon title={translate(`newRoomPage.visibilityOptions.${report.visibility}`)} description={translate('newRoomPage.visibility')} - onPress={() => Navigation.navigate(ROUTES.REPORT_SETTINGS_VISIBILITY.getRoute(report.reportID, backTo))} + onPress={() => { + Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.REPORT_SETTINGS_VISIBILITY.path)); + }} /> ) : (