diff --git a/src/ROUTES.ts b/src/ROUTES.ts index d562fd0bd8d7..2c30d1f3d2cd 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -204,39 +204,19 @@ const DYNAMIC_ROUTES = { path: 'invoice-account-select', entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_QUICKBOOKS_ONLINE_EXPORT], }, - POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER: { - path: 'sage-preferred-exporter', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT], - }, - POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE: { - path: 'date', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT], - }, - POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES: { - path: 'reimbursable', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT], - }, - POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES: { - path: 'nonreimbursable', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT], - }, POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION: { - path: 'nonreimbursable-expenses', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES], - }, - POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION: { - path: 'reimbursable-expenses', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_EXPENSES], + path: 'destination', + entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES], }, POLICY_ACCOUNTING_SAGE_INTACCT_DEFAULT_VENDOR: { path: 'default-vendor', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_EXPENSES, SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES], + entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_REIMBURSABLE_EXPENSES, SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES], getRoute: (reimbursable: string) => getUrlWithParams('default-vendor', {reimbursable}), queryParams: ['reimbursable'], }, POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT: { path: 'credit-card-account', - entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES], + entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES], }, POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC: { path: 'sage-intacct-autosync', @@ -3836,6 +3816,36 @@ const ROUTES = { // eslint-disable-next-line no-restricted-syntax -- Legacy route generation getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/export` as const, backTo, false), }, + POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER: { + route: 'workspaces/:policyID/accounting/sage-intacct/export/preferred-exporter', + + // eslint-disable-next-line no-restricted-syntax -- Legacy route generation + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/export/preferred-exporter` as const, backTo), + }, + POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE: { + route: 'workspaces/:policyID/accounting/sage-intacct/export/date', + + // eslint-disable-next-line no-restricted-syntax -- Legacy route generation + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/export/date` as const, backTo), + }, + POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES: { + route: 'workspaces/:policyID/accounting/sage-intacct/export/reimbursable', + + // eslint-disable-next-line no-restricted-syntax -- Legacy route generation + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/export/reimbursable` as const, backTo), + }, + POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES: { + route: 'workspaces/:policyID/accounting/sage-intacct/export/nonreimbursable', + + // eslint-disable-next-line no-restricted-syntax -- Legacy route generation + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/export/nonreimbursable` as const, backTo), + }, + POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION: { + route: 'workspaces/:policyID/accounting/sage-intacct/export/reimbursable/destination', + + // eslint-disable-next-line no-restricted-syntax -- Legacy route generation + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/export/reimbursable/destination` as const, backTo), + }, POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED: { route: 'workspaces/:policyID/accounting/sage-intacct/advanced', getRoute: (policyID: string | undefined) => { diff --git a/src/SCREENS.ts b/src/SCREENS.ts index eeddc0b6d638..387edc01db54 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -640,11 +640,11 @@ const SCREENS = { SAGE_INTACCT_ADD_USER_DIMENSION: 'Policy_Accounting_Sage_Intacct_Add_User_Dimension', SAGE_INTACCT_EDIT_USER_DIMENSION: 'Policy_Accounting_Sage_Intacct_Edit_User_Dimension', SAGE_INTACCT_EXPORT: 'Policy_Accounting_Sage_Intacct_Export', - DYNAMIC_SAGE_INTACCT_PREFERRED_EXPORTER: 'Dynamic_Policy_Accounting_Sage_Intacct_Preferred_Exporter', - DYNAMIC_SAGE_INTACCT_EXPORT_DATE: 'Dynamic_Policy_Accounting_Sage_Intacct_Export_Date', - DYNAMIC_SAGE_INTACCT_REIMBURSABLE_EXPENSES: 'Dynamic_Policy_Accounting_Sage_Intacct_Reimbursable_Expenses', - DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES: 'Dynamic_Policy_Accounting_Sage_Intacct_Non_Reimbursable_Expenses', - DYNAMIC_SAGE_INTACCT_REIMBURSABLE_DESTINATION: 'Dynamic_Policy_Accounting_Sage_Intacct_Reimbursable_Destination', + SAGE_INTACCT_PREFERRED_EXPORTER: 'Policy_Accounting_Sage_Intacct_Preferred_Exporter', + SAGE_INTACCT_EXPORT_DATE: 'Policy_Accounting_Sage_Intacct_Export_Date', + SAGE_INTACCT_REIMBURSABLE_EXPENSES: 'Policy_Accounting_Sage_Intacct_Reimbursable_Expenses', + SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES: 'Policy_Accounting_Sage_Intacct_Non_Reimbursable_Expenses', + SAGE_INTACCT_REIMBURSABLE_DESTINATION: 'Policy_Accounting_Sage_Intacct_Reimbursable_Destination', DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION: 'Dynamic_Policy_Accounting_Sage_Intacct_Non_Reimbursable_Destination', DYNAMIC_SAGE_INTACCT_DEFAULT_VENDOR: 'Dynamic_Policy_Accounting_Sage_Intacct_Default_Vendor', DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT: 'Dynamic_Policy_Accounting_Sage_Intacct_Non_Reimbursable_Credit_Card_Account', diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 9e1cdda70839..96d25d8aa5fa 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -775,16 +775,15 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/accounting/intacct/ExistingConnectionsPage').default, [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ENTITY]: () => require('../../../../pages/workspace/accounting/intacct/SageIntacctEntityPage').default, [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT]: () => require('../../../../pages/workspace/accounting/intacct/export/SageIntacctExportPage').default, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_PREFERRED_EXPORTER]: () => - require('../../../../pages/workspace/accounting/intacct/export/DynamicSageIntacctPreferredExporterPage').default, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_EXPORT_DATE]: () => - require('../../../../pages/workspace/accounting/intacct/export/DynamicSageIntacctExportDatePage').default, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_EXPENSES]: () => - require('../../../../pages/workspace/accounting/intacct/export/DynamicSageIntacctReimbursableExpensesPage').default, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES]: () => - require('../../../../pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesPage').default, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_DESTINATION]: () => - require('../../../../pages/workspace/accounting/intacct/export/DynamicSageIntacctReimbursableExpensesDestinationPage').default, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PREFERRED_EXPORTER]: () => + require('../../../../pages/workspace/accounting/intacct/export/SageIntacctPreferredExporterPage').default, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT_DATE]: () => require('../../../../pages/workspace/accounting/intacct/export/SageIntacctDatePage').default, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_REIMBURSABLE_EXPENSES]: () => + require('../../../../pages/workspace/accounting/intacct/export/SageIntacctReimbursableExpensesPage').default, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES]: () => + require('../../../../pages/workspace/accounting/intacct/export/SageIntacctNonReimbursableExpensesPage').default, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_REIMBURSABLE_DESTINATION]: () => + require('../../../../pages/workspace/accounting/intacct/export/SageIntacctReimbursableExpensesDestinationPage').default, [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION]: () => require('../../../../pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesDestinationPage').default, [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_DEFAULT_VENDOR]: () => diff --git a/src/libs/Navigation/linkingConfig/OldRoutes.ts b/src/libs/Navigation/linkingConfig/OldRoutes.ts index be3fd1287962..6964b23f07f2 100644 --- a/src/libs/Navigation/linkingConfig/OldRoutes.ts +++ b/src/libs/Navigation/linkingConfig/OldRoutes.ts @@ -7,8 +7,6 @@ const oldRoutes: Record = { '/workspaces/*/overview/address': '/workspaces/$1/overview/workspace-address', '/workspaces/*/accounting/*/card-reconciliation/account': '/workspaces/$1/accounting/$2/card-reconciliation/account-reconciliation-settings', '/workspaces/*/connections/netsuite/export/invoice-item-preference/invoice-item/select': '/workspaces/$1/connections/netsuite/export/invoice-item-preference/select/invoice-item/select', - '/workspaces/*/accounting/sage-intacct/export/preferred-exporter': '/workspaces/$1/accounting/sage-intacct/export/sage-preferred-exporter', - '/workspaces/*/accounting/sage-intacct/export/reimbursable/destination': '/workspaces/$1/accounting/sage-intacct/export/reimbursable-expenses', '/workspaces/*/connections/quickbooks-online/advanced/autosync/accounting-method': '/workspaces/$1/accounting/quickbooks-online/advanced/quickbooks-online-autosync/quickbooks-online-accounting-method', '/workspaces/*/connections/quickbooks-online/advanced/autosync': '/workspaces/$1/accounting/quickbooks-online/advanced/quickbooks-online-autosync', diff --git a/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts index 2e5f64cf505b..10e6056c9dfa 100755 --- a/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts +++ b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts @@ -153,11 +153,11 @@ const WORKSPACE_TO_RHP: Partial['config'] = { [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ADD_USER_DIMENSION]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADD_USER_DIMENSION.route}, [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EDIT_USER_DIMENSION]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EDIT_USER_DIMENSION.route}, [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT.route}, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_PREFERRED_EXPORTER]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER.path, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_EXPORT_DATE]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE.path, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_EXPENSES]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES.path, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES.path, - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_DESTINATION]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION.path, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PREFERRED_EXPORTER]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER.route}, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT_DATE]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE.route}, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_REIMBURSABLE_EXPENSES]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES.route}, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES.route}, + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_REIMBURSABLE_DESTINATION]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION.route}, [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION.path, [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_DEFAULT_VENDOR]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_DEFAULT_VENDOR.path, [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT]: diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 239cdf6fe124..4e8cccf47262 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1078,20 +1078,30 @@ type SettingsNavigatorParamList = { // 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.ACCOUNTING.DYNAMIC_SAGE_INTACCT_PREFERRED_EXPORTER]: { + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PREFERRED_EXPORTER]: { 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; }; - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_EXPORT_DATE]: { + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT_DATE]: { 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; }; - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_EXPENSES]: { + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_REIMBURSABLE_EXPENSES]: { 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; }; - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES]: { + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES]: { 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; }; - [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_REIMBURSABLE_DESTINATION]: { + [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_REIMBURSABLE_DESTINATION]: { 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; }; [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION]: { policyID: string; diff --git a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesDestinationPage.tsx b/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesDestinationPage.tsx index 54aac4734da0..b06371a3aafd 100644 --- a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesDestinationPage.tsx +++ b/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesDestinationPage.tsx @@ -51,7 +51,7 @@ function DynamicSageIntacctNonReimbursableExpensesDestinationPage({policy}: With return ( ; }; -function DynamicSageIntacctExportDatePage({policy}: WithPolicyProps) { +function SageIntacctDatePage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id; const styles = useThemeStyles(); @@ -36,11 +39,12 @@ function DynamicSageIntacctExportDatePage({policy}: WithPolicyProps) { keyForList: dateType, isSelected: exportConfig?.exportDate === dateType, })); - const backPath = useDynamicBackPath(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE.path); + const route = useRoute>(); + const backTo = route.params?.backTo; const goBack = useCallback(() => { - Navigation.goBack(backPath); - }, [backPath]); + Navigation.goBack(backTo ?? (policyID && ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT.getRoute(policyID))); + }, [policyID, backTo]); const headerContent = useMemo( () => ( @@ -63,7 +67,7 @@ function DynamicSageIntacctExportDatePage({policy}: WithPolicyProps) { return ( Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER.path)), + action: !policyID ? undefined : () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER.getRoute(policyID, Navigation.getActiveRoute())), title: exportConfig?.exporter, subscribedSettings: [CONST.SAGE_INTACCT_CONFIG.EXPORTER], }, { description: translate('workspace.sageIntacct.exportDate.label'), - action: !policyID ? undefined : () => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE.path)), + action: !policyID ? undefined : () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE.getRoute(policyID, Navigation.getActiveRoute())), title: exportConfig?.exportDate ? translate(`workspace.sageIntacct.exportDate.values.${exportConfig.exportDate}.label`) : undefined, subscribedSettings: [CONST.SAGE_INTACCT_CONFIG.EXPORT_DATE], }, { description: translate('workspace.accounting.exportOutOfPocket'), - action: !policyID ? undefined : () => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES.path)), + action: !policyID ? undefined : () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES.getRoute(policyID, Navigation.getActiveRoute())), title: exportConfig?.reimbursable ? translate(`workspace.sageIntacct.reimbursableExpenses.values.${exportConfig.reimbursable}`) : undefined, subscribedSettings: [CONST.SAGE_INTACCT_CONFIG.REIMBURSABLE, CONST.SAGE_INTACCT_CONFIG.REIMBURSABLE_VENDOR], }, { description: translate('workspace.accounting.exportCompanyCard'), - action: !policyID ? undefined : () => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES.path)), + action: !policyID ? undefined : () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES.getRoute(policyID, Navigation.getActiveRoute())), title: exportConfig?.nonReimbursable ? translate(`workspace.sageIntacct.nonReimbursableExpenses.values.${exportConfig.nonReimbursable}`) : undefined, subscribedSettings: [ CONST.SAGE_INTACCT_CONFIG.NON_REIMBURSABLE, diff --git a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesPage.tsx b/src/pages/workspace/accounting/intacct/export/SageIntacctNonReimbursableExpensesPage.tsx similarity index 91% rename from src/pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesPage.tsx rename to src/pages/workspace/accounting/intacct/export/SageIntacctNonReimbursableExpensesPage.tsx index f72e69a28eb6..78cd18af737c 100644 --- a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableExpensesPage.tsx +++ b/src/pages/workspace/accounting/intacct/export/SageIntacctNonReimbursableExpensesPage.tsx @@ -1,15 +1,17 @@ +import {useRoute} from '@react-navigation/native'; import React from 'react'; import Accordion from '@components/Accordion'; import ConnectionLayout from '@components/ConnectionLayout'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; import useAccordionAnimation from '@hooks/useAccordionAnimation'; -import useDynamicBackPath from '@hooks/useDynamicBackPath'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import {getLatestErrorField} from '@libs/ErrorUtils'; import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute'; import Navigation from '@libs/Navigation/Navigation'; +import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; +import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import {areSettingsInErrorFields, getSageIntacctNonReimbursableActiveDefaultVendor, settingsPendingAction} from '@libs/PolicyUtils'; import type {ExtendedMenuItemWithSubscribedSettings, MenuItemToRender} from '@pages/workspace/accounting/intacct/types'; import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections'; @@ -18,10 +20,11 @@ import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOpt import {updateSageIntacctDefaultVendor} from '@userActions/connections/SageIntacct'; import {clearSageIntacctErrorField} from '@userActions/Policy/Policy'; import CONST from '@src/CONST'; -import {DYNAMIC_ROUTES} from '@src/ROUTES'; +import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES'; +import type SCREENS from '@src/SCREENS'; import {getDefaultVendorName} from './utils'; -function DynamicSageIntacctNonReimbursableExpensesPage({policy}: WithPolicyConnectionsProps) { +function SageIntacctNonReimbursableExpensesPage({policy}: WithPolicyConnectionsProps) { const {translate} = useLocalize(); const policyID = policy?.id; const styles = useThemeStyles(); @@ -33,7 +36,8 @@ function DynamicSageIntacctNonReimbursableExpensesPage({policy}: WithPolicyConne !config?.export.nonReimbursable || (config?.export.nonReimbursable === CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.CREDIT_CARD_CHARGE && !config?.export.nonReimbursableCreditCardChargeDefaultVendor) ); - const backPath = useDynamicBackPath(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES.path); + const route = useRoute>(); + const backTo = route.params?.backTo; const {isAccordionExpanded, shouldAnimateAccordionSection} = useAccordionAnimation(expandedCondition); @@ -143,10 +147,10 @@ function DynamicSageIntacctNonReimbursableExpensesPage({policy}: WithPolicyConne return ( Navigation.goBack(backPath)} + onBackButtonPress={() => Navigation.goBack(backTo ?? (policyID && ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT.getRoute(policyID)))} accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]} policyID={policyID} featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED} @@ -186,4 +190,4 @@ function DynamicSageIntacctNonReimbursableExpensesPage({policy}: WithPolicyConne ); } -export default withPolicyConnections(DynamicSageIntacctNonReimbursableExpensesPage); +export default withPolicyConnections(SageIntacctNonReimbursableExpensesPage); diff --git a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctPreferredExporterPage.tsx b/src/pages/workspace/accounting/intacct/export/SageIntacctPreferredExporterPage.tsx similarity index 84% rename from src/pages/workspace/accounting/intacct/export/DynamicSageIntacctPreferredExporterPage.tsx rename to src/pages/workspace/accounting/intacct/export/SageIntacctPreferredExporterPage.tsx index 5dc214835bbc..f84da6131ad1 100644 --- a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctPreferredExporterPage.tsx +++ b/src/pages/workspace/accounting/intacct/export/SageIntacctPreferredExporterPage.tsx @@ -1,3 +1,4 @@ +import {useRoute} from '@react-navigation/native'; import isEmpty from 'lodash/isEmpty'; import React, {useCallback, useMemo} from 'react'; import {View} from 'react-native'; @@ -6,24 +7,26 @@ import type {ListItem} from '@components/SelectionList/types'; import SelectionScreen from '@components/SelectionScreen'; import Text from '@components/Text'; import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; -import useDynamicBackPath from '@hooks/useDynamicBackPath'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import {clearSageIntacctErrorField} from '@libs/actions/Policy/Policy'; import {getLatestErrorField} from '@libs/ErrorUtils'; +import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; +import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import {getAdminEmployees, isExpensifyTeam, settingsPendingAction} from '@libs/PolicyUtils'; import Navigation from '@navigation/Navigation'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import withPolicyConnections from '@pages/workspace/withPolicyConnections'; import {updateSageIntacctExporter} from '@userActions/connections/SageIntacct'; import CONST from '@src/CONST'; -import {DYNAMIC_ROUTES} from '@src/ROUTES'; +import ROUTES from '@src/ROUTES'; +import type SCREENS from '@src/SCREENS'; type CardListItem = ListItem & { value: string; }; -function DynamicSageIntacctPreferredExporterPage({policy}: WithPolicyProps) { +function SageIntacctPreferredExporterPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const policyOwner = policy?.owner ?? ''; @@ -33,11 +36,12 @@ function DynamicSageIntacctPreferredExporterPage({policy}: WithPolicyProps) { const {login: currentUserLogin} = useCurrentUserPersonalDetails(); const policyID = policy?.id; - const backPath = useDynamicBackPath(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER.path); + const route = useRoute>(); + const backTo = route.params?.backTo; const goBack = useCallback(() => { - Navigation.goBack(backPath); - }, [backPath]); + Navigation.goBack(backTo ?? (policyID && ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT.getRoute(policyID))); + }, [policyID, backTo]); const data: CardListItem[] = useMemo(() => { if (!isEmpty(policyOwner) && isEmpty(exporters)) { @@ -96,7 +100,7 @@ function DynamicSageIntacctPreferredExporterPage({policy}: WithPolicyProps) { policyID={policyID} accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]} featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED} - displayName="DynamicSageIntacctPreferredExporterPage" + displayName="SageIntacctPreferredExporterPage" data={data} listItem={RadioListItem} headerContent={headerContent} @@ -113,4 +117,4 @@ function DynamicSageIntacctPreferredExporterPage({policy}: WithPolicyProps) { ); } -export default withPolicyConnections(DynamicSageIntacctPreferredExporterPage); +export default withPolicyConnections(SageIntacctPreferredExporterPage); diff --git a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctReimbursableExpensesDestinationPage.tsx b/src/pages/workspace/accounting/intacct/export/SageIntacctReimbursableExpensesDestinationPage.tsx similarity index 79% rename from src/pages/workspace/accounting/intacct/export/DynamicSageIntacctReimbursableExpensesDestinationPage.tsx rename to src/pages/workspace/accounting/intacct/export/SageIntacctReimbursableExpensesDestinationPage.tsx index afccda26811f..6215ea532bc2 100644 --- a/src/pages/workspace/accounting/intacct/export/DynamicSageIntacctReimbursableExpensesDestinationPage.tsx +++ b/src/pages/workspace/accounting/intacct/export/SageIntacctReimbursableExpensesDestinationPage.tsx @@ -1,32 +1,36 @@ +import {useRoute} from '@react-navigation/native'; import React, {useCallback} from 'react'; import type {ValueOf} from 'type-fest'; import RadioListItem from '@components/SelectionList/ListItem/RadioListItem'; import type {ListItem} from '@components/SelectionList/types'; import SelectionScreen from '@components/SelectionScreen'; import type {SelectorType} from '@components/SelectionScreen'; -import useDynamicBackPath from '@hooks/useDynamicBackPath'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import {clearSageIntacctErrorField} from '@libs/actions/Policy/Policy'; import {getLatestErrorField} from '@libs/ErrorUtils'; +import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; +import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import {settingsPendingAction} from '@libs/PolicyUtils'; import Navigation from '@navigation/Navigation'; import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections'; import withPolicyConnections from '@pages/workspace/withPolicyConnections'; import {changeMappingsValueFromDefaultToTag, updateSageIntacctReimbursableExpensesExportDestination} from '@userActions/connections/SageIntacct'; import CONST from '@src/CONST'; -import {DYNAMIC_ROUTES} from '@src/ROUTES'; +import ROUTES from '@src/ROUTES'; +import type SCREENS from '@src/SCREENS'; type MenuListItem = ListItem & { value: ValueOf; }; -function DynamicSageIntacctReimbursableExpensesDestinationPage({policy}: WithPolicyConnectionsProps) { +function SageIntacctReimbursableExpensesDestinationPage({policy}: WithPolicyConnectionsProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const policyID = policy?.id; const {config} = policy?.connections?.intacct ?? {}; - const backPath = useDynamicBackPath(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION.path); + const route = useRoute>(); + const backTo = route.params.backTo; const data: MenuListItem[] = Object.values(CONST.SAGE_INTACCT_REIMBURSABLE_EXPENSE_TYPE).map((expenseType) => ({ value: expenseType, @@ -36,8 +40,8 @@ function DynamicSageIntacctReimbursableExpensesDestinationPage({policy}: WithPol })); const goBack = useCallback(() => { - Navigation.goBack(backPath); - }, [backPath]); + Navigation.goBack(backTo ?? (policyID && ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES.getRoute(policyID))); + }, [backTo, policyID]); const selectDestination = useCallback( (row: MenuListItem) => { @@ -55,7 +59,7 @@ function DynamicSageIntacctReimbursableExpensesDestinationPage({policy}: WithPol return ( >(); + const backTo = route.params?.backTo; const defaultVendorName = getDefaultVendorName(reimbursableExpenseReportDefaultVendor, intacctData?.vendors); @@ -60,7 +64,7 @@ function DynamicSageIntacctReimbursableExpensesPage({policy}: WithPolicyConnecti if (!policyID) { return; } - Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION.path)); + Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION.getRoute(policyID, Navigation.getActiveRoute())); }, subscribedSettings: [CONST.SAGE_INTACCT_CONFIG.REIMBURSABLE], }, @@ -111,10 +115,10 @@ function DynamicSageIntacctReimbursableExpensesPage({policy}: WithPolicyConnecti return ( Navigation.goBack(backPath)} + onBackButtonPress={() => Navigation.goBack(backTo ?? (policyID && ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT.getRoute(policyID)))} accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]} policyID={policyID} featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED} @@ -154,4 +158,4 @@ function DynamicSageIntacctReimbursableExpensesPage({policy}: WithPolicyConnecti ); } -export default withPolicyConnections(DynamicSageIntacctReimbursableExpensesPage); +export default withPolicyConnections(SageIntacctReimbursableExpensesPage);