From dc2327b814367d387c380378832b86cf04dc0845 Mon Sep 17 00:00:00 2001 From: Filip Solecki Date: Fri, 15 Mar 2024 07:40:23 +0100 Subject: [PATCH 01/15] Settings pages --- src/CONST.ts | 3 + src/ONYXKEYS.ts | 3 + src/ROUTES.ts | 16 ++ src/SCREENS.ts | 4 + src/components/TaxPicker.tsx | 69 +++----- src/languages/en.ts | 1 + src/languages/es.ts | 1 + src/libs/API/types.ts | 3 + .../AppNavigator/ModalStackNavigators.tsx | 4 + .../FULL_SCREEN_TO_RHP_MAPPING.ts | 6 + src/libs/Navigation/linkingConfig/config.ts | 12 ++ src/libs/Navigation/types.ts | 12 ++ src/libs/actions/TaxRate.ts | 157 ++++++++++++++++++ .../workspace/taxes/WorkspaceTaxesPage.tsx | 4 +- .../WorkspaceTaxesSettingsCustomTaxName.tsx | 80 +++++++++ .../WorkspaceTaxesSettingsForeignCurrency.tsx | 71 ++++++++ .../taxes/WorkspaceTaxesSettingsPage.tsx | 76 +++++++++ ...orkspaceTaxesSettingsWorkspaceCurrency.tsx | 72 ++++++++ src/types/form/WorkspaceTaxCustomName.ts | 18 ++ src/types/form/index.ts | 1 + 20 files changed, 568 insertions(+), 45 deletions(-) create mode 100644 src/libs/actions/TaxRate.ts create mode 100644 src/pages/workspace/taxes/WorkspaceTaxesSettingsCustomTaxName.tsx create mode 100644 src/pages/workspace/taxes/WorkspaceTaxesSettingsForeignCurrency.tsx create mode 100644 src/pages/workspace/taxes/WorkspaceTaxesSettingsPage.tsx create mode 100644 src/pages/workspace/taxes/WorkspaceTaxesSettingsWorkspaceCurrency.tsx create mode 100644 src/types/form/WorkspaceTaxCustomName.ts diff --git a/src/CONST.ts b/src/CONST.ts index fa44cda20720..28eff2dadfc1 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -346,6 +346,9 @@ const CONST = { INSTALLED: 'installed', NOT_INSTALLED: 'not-installed', }, + TAX_RATES: { + NAME_MAX_LENGTH: 50, + }, PLATFORM: { IOS: 'ios', ANDROID: 'android', diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 820937b1eb89..d8317c42af6a 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -339,6 +339,8 @@ const ONYXKEYS = { WORKSPACE_DESCRIPTION_FORM_DRAFT: 'workspaceDescriptionFormDraft', WORKSPACE_RATE_AND_UNIT_FORM: 'workspaceRateAndUnitForm', WORKSPACE_RATE_AND_UNIT_FORM_DRAFT: 'workspaceRateAndUnitFormDraft', + WORKSPACE_TAX_CUSTOM_NAME: 'workspaceTaxCustomName', + WORKSPACE_TAX_CUSTOM_NAME_DRAFT: 'workspaceTaxCustomNameDraft', CLOSE_ACCOUNT_FORM: 'closeAccount', CLOSE_ACCOUNT_FORM_DRAFT: 'closeAccountDraft', PROFILE_SETTINGS_FORM: 'profileSettingsForm', @@ -420,6 +422,7 @@ type OnyxFormValuesMapping = { [ONYXKEYS.FORMS.WORKSPACE_CATEGORY_FORM]: FormTypes.WorkspaceCategoryForm; [ONYXKEYS.FORMS.WORKSPACE_TAG_CREATE_FORM]: FormTypes.WorkspaceTagCreateForm; [ONYXKEYS.FORMS.WORKSPACE_RATE_AND_UNIT_FORM]: FormTypes.WorkspaceRateAndUnitForm; + [ONYXKEYS.FORMS.WORKSPACE_TAX_CUSTOM_NAME]: FormTypes.WorkspaceTaxCustomName; [ONYXKEYS.FORMS.CLOSE_ACCOUNT_FORM]: FormTypes.CloseAccountForm; [ONYXKEYS.FORMS.PROFILE_SETTINGS_FORM]: FormTypes.ProfileSettingsForm; [ONYXKEYS.FORMS.DISPLAY_NAME_FORM]: FormTypes.DisplayNameForm; diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 680c5bced9a9..5d4ba8bee5e6 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -593,6 +593,22 @@ const ROUTES = { route: 'settings/workspaces/:policyID/taxes', getRoute: (policyID: string) => `settings/workspaces/${policyID}/taxes` as const, }, + WORKSPACE_TAXES_SETTINGS: { + route: 'settings/workspaces/:policyID/taxes/settings', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/taxes/settings` as const, + }, + WORKSPACE_TAXES_SETTINGS_WORKSPACE_CURRENCY_DEFAULT: { + route: 'settings/workspaces/:policyID/taxes/settings/workspace-currency', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/taxes/settings/workspace-currency` as const, + }, + WORKSPACE_TAXES_SETTINGS_FOREIGN_CURRENCY_DEFAULT: { + route: 'settings/workspaces/:policyID/taxes/settings/foreign-currency', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/taxes/settings/foreign-currency` as const, + }, + WORKSPACE_TAXES_SETTINGS_CUSTOM_TAX_NAME: { + route: 'settings/workspaces/:policyID/taxes/settings/tax-name', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/taxes/settings/tax-name` as const, + }, WORKSPACE_MEMBER_DETAILS: { route: 'settings/workspaces/:policyID/members/:accountID', getRoute: (policyID: string, accountID: number, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/members/${accountID}`, backTo), diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 7ccb24aa19e5..9c12579c9f84 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -220,6 +220,10 @@ const SCREENS = { TAGS_SETTINGS: 'Tags_Settings', TAGS_EDIT: 'Tags_Edit', TAXES: 'Workspace_Taxes', + TAXES_SETTINGS: 'Workspace_Taxes_Settings', + TAXES_SETTINGS_CUSTOM_TAX_NAME: 'Workspace_Taxes_Settings_CustomTaxName', + TAXES_SETTINGS_WORKSPACE_CURRENCY_DEFAULT: 'Workspace_Taxes_Settings_WorkspaceCurrency', + TAXES_SETTINGS_FOREIGN_CURRENCY_DEFAULT: 'Workspace_Taxes_Settings_ForeignCurrency', TAG_CREATE: 'Tag_Create', CURRENCY: 'Workspace_Profile_Currency', WORKFLOWS: 'Workspace_Workflows', diff --git a/src/components/TaxPicker.tsx b/src/components/TaxPicker.tsx index 664aa741c400..f7d8fad5b261 100644 --- a/src/components/TaxPicker.tsx +++ b/src/components/TaxPicker.tsx @@ -1,17 +1,17 @@ -import React, {useMemo, useState} from 'react'; +import React, {useState} from 'react'; import type {EdgeInsets} from 'react-native-safe-area-context'; import useLocalize from '@hooks/useLocalize'; import useStyleUtils from '@hooks/useStyleUtils'; -import useThemeStyles from '@hooks/useThemeStyles'; -import * as OptionsListUtils from '@libs/OptionsListUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; import CONST from '@src/CONST'; -import type {TaxRatesWithDefault} from '@src/types/onyx'; -import OptionsSelector from './OptionsSelector'; +import type {TaxRate, TaxRatesWithDefault} from '@src/types/onyx'; +import SelectionList from './SelectionList'; +import RadioListItem from './SelectionList/RadioListItem'; +import type {ListItem} from './SelectionList/types'; type TaxPickerProps = { /** Collection of tax rates attached to a policy */ - taxRates: TaxRatesWithDefault; + taxRates?: TaxRatesWithDefault; /** The selected tax rate of an expense */ selectedTaxRate?: string; @@ -23,60 +23,41 @@ type TaxPickerProps = { insets?: EdgeInsets; /** Callback to fire when a tax is pressed */ - onSubmit: () => void; + onSubmit: (tax: ListItem) => void; }; function TaxPicker({selectedTaxRate = '', taxRates, insets, onSubmit}: TaxPickerProps) { - const styles = useThemeStyles(); const StyleUtils = useStyleUtils(); const {translate} = useLocalize(); const [searchValue, setSearchValue] = useState(''); - const taxRatesCount = TransactionUtils.getEnabledTaxRateCount(taxRates.taxes); - const isTaxRatesCountBelowThreshold = taxRatesCount < CONST.TAX_RATES_LIST_THRESHOLD; + if (!taxRates) { + return; + } - const shouldShowTextInput = !isTaxRatesCountBelowThreshold; + const taxRatesCount = TransactionUtils.getEnabledTaxRateCount(taxRates?.taxes); + const isTaxRatesCountBelowThreshold = taxRatesCount < CONST.TAX_RATES_LIST_THRESHOLD; - const selectedOptions = useMemo(() => { - if (!selectedTaxRate) { - return []; - } + const defaultTaxKey = taxRates.defaultExternalID; - return [ - { - name: selectedTaxRate, - enabled: true, - accountID: null, - }, - ]; - }, [selectedTaxRate]); + const getModifiedName = (data: TaxRate, code: string) => `${data.name} (${data.value})${defaultTaxKey === code ? ` • ${translate('common.default')}` : ''}`; - const sections = useMemo(() => { - const {taxRatesOptions} = OptionsListUtils.getFilteredOptions({}, {}, [], searchValue, selectedOptions, [], false, false, false, {}, [], false, {}, [], false, false, true, taxRates); - return taxRatesOptions; - }, [taxRates, searchValue, selectedOptions]); + const shouldShowTextInput = !isTaxRatesCountBelowThreshold; - const selectedOptionKey = sections?.[0]?.data?.find((taxRate) => taxRate.searchText === selectedTaxRate)?.keyForList; + const section = Object.entries(taxRates.taxes ?? {}).map(([key, item]) => ({text: getModifiedName(item, key), keyForList: key})); + const selectedOptionKey = section.find((taxRate) => taxRate.text === selectedTaxRate)?.keyForList; return ( - ); } diff --git a/src/languages/en.ts b/src/languages/en.ts index eecd81c54123..4b08f13d7be1 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1855,6 +1855,7 @@ export default { addRate: 'Add rate', workspaceDefault: 'Workspace currency default', foreignDefault: 'Foreign currency default', + customTaxName: 'Custom tax name', }, emptyWorkspace: { title: 'Create a workspace', diff --git a/src/languages/es.ts b/src/languages/es.ts index cd36f9071de6..ad73614bc1e7 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1879,6 +1879,7 @@ export default { addRate: 'Añadir tasa', workspaceDefault: 'Moneda por defecto del espacio de trabajo', foreignDefault: 'Moneda extranjera por defecto', + customTaxName: 'Nombre del impuesto personalizado', }, emptyWorkspace: { title: 'Crea un espacio de trabajo', diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts index 50b6206bc341..5b79b9df9549 100644 --- a/src/libs/API/types.ts +++ b/src/libs/API/types.ts @@ -171,6 +171,9 @@ const WRITE_COMMANDS = { ENABLE_POLICY_TAXES: 'EnablePolicyTaxes', ENABLE_POLICY_WORKFLOWS: 'EnablePolicyWorkflows', ENABLE_POLICY_REPORT_FIELDS: 'EnablePolicyReportFields', + SET_POLICY_TAXES_CURRENCY_DEFAULT: 'SetPolicyCurrencyDefaultTax', + SET_POLICY_TAXES_FOREIGN_CURRENCY_DEFAULT: 'SetPolicyForeignCurrencyDefaultTax', + SET_POLICY_CUSTOM_TAX_NAME: 'SetPolicyCustomTaxName', JOIN_POLICY_VIA_INVITE_LINK: 'JoinWorkspaceViaInviteLink', ACCEPT_JOIN_REQUEST: 'AcceptJoinRequest', DECLINE_JOIN_REQUEST: 'DeclineJoinRequest', diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx index 2e55593ddd01..c8f785329f3c 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx @@ -267,6 +267,10 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../pages/workspace/tags/WorkspaceTagsSettingsPage').default as React.ComponentType, [SCREENS.WORKSPACE.TAGS_EDIT]: () => require('../../../pages/workspace/tags/WorkspaceEditTagsPage').default as React.ComponentType, [SCREENS.WORKSPACE.TAG_CREATE]: () => require('../../../pages/workspace/tags/WorkspaceCreateTagPage').default as React.ComponentType, + [SCREENS.WORKSPACE.TAXES_SETTINGS]: () => require('../../../pages/workspace/taxes/WorkspaceTaxesSettingsPage').default as React.ComponentType, + [SCREENS.WORKSPACE.TAXES_SETTINGS_CUSTOM_TAX_NAME]: () => require('../../../pages/workspace/taxes/WorkspaceTaxesSettingsCustomTaxName').default as React.ComponentType, + [SCREENS.WORKSPACE.TAXES_SETTINGS_FOREIGN_CURRENCY_DEFAULT]: () => require('../../../pages/workspace/taxes/WorkspaceTaxesSettingsForeignCurrency').default as React.ComponentType, + [SCREENS.WORKSPACE.TAXES_SETTINGS_WORKSPACE_CURRENCY_DEFAULT]: () => require('../../../pages/workspace/taxes/WorkspaceTaxesSettingsWorkspaceCurrency').default as React.ComponentType, [SCREENS.REIMBURSEMENT_ACCOUNT]: () => require('../../../pages/ReimbursementAccount/ReimbursementAccountPage').default as React.ComponentType, [SCREENS.GET_ASSISTANCE]: () => require('../../../pages/GetAssistancePage').default as React.ComponentType, [SCREENS.SETTINGS.TWO_FACTOR_AUTH]: () => require('../../../pages/settings/Security/TwoFactorAuth/TwoFactorAuthPage').default as React.ComponentType, diff --git a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts index 7561fb44933c..213474e52acb 100755 --- a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts +++ b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts @@ -12,6 +12,12 @@ const FULL_SCREEN_TO_RHP_MAPPING: Partial> = { SCREENS.WORKSPACE.WORKFLOWS_PAYER, ], [SCREENS.WORKSPACE.TAGS]: [SCREENS.WORKSPACE.TAGS_SETTINGS, SCREENS.WORKSPACE.TAGS_EDIT, SCREENS.WORKSPACE.TAG_CREATE], + [SCREENS.WORKSPACE.TAXES]: [ + SCREENS.WORKSPACE.TAXES_SETTINGS, + SCREENS.WORKSPACE.TAXES_SETTINGS_CUSTOM_TAX_NAME, + SCREENS.WORKSPACE.TAXES_SETTINGS_FOREIGN_CURRENCY_DEFAULT, + SCREENS.WORKSPACE.TAXES_SETTINGS_WORKSPACE_CURRENCY_DEFAULT, + ], [SCREENS.WORKSPACE.CATEGORIES]: [SCREENS.WORKSPACE.CATEGORY_CREATE, SCREENS.WORKSPACE.CATEGORY_SETTINGS, SCREENS.WORKSPACE.CATEGORIES_SETTINGS, SCREENS.WORKSPACE.CATEGORY_EDIT], }; diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index 56734e3c7242..ea219fc3e147 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -298,6 +298,18 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.TAG_CREATE]: { path: ROUTES.WORKSPACE_TAG_CREATE.route, }, + [SCREENS.WORKSPACE.TAXES_SETTINGS]: { + path: ROUTES.WORKSPACE_TAXES_SETTINGS.route, + }, + [SCREENS.WORKSPACE.TAXES_SETTINGS_CUSTOM_TAX_NAME]: { + path: ROUTES.WORKSPACE_TAXES_SETTINGS_CUSTOM_TAX_NAME.route, + }, + [SCREENS.WORKSPACE.TAXES_SETTINGS_FOREIGN_CURRENCY_DEFAULT]: { + path: ROUTES.WORKSPACE_TAXES_SETTINGS_FOREIGN_CURRENCY_DEFAULT.route, + }, + [SCREENS.WORKSPACE.TAXES_SETTINGS_WORKSPACE_CURRENCY_DEFAULT]: { + path: ROUTES.WORKSPACE_TAXES_SETTINGS_WORKSPACE_CURRENCY_DEFAULT.route, + }, [SCREENS.REIMBURSEMENT_ACCOUNT]: { path: ROUTES.BANK_ACCOUNT_WITH_STEP_TO_OPEN.route, exact: true, diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 939841279eed..671ce9e7f1f1 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -189,6 +189,18 @@ type SettingsNavigatorParamList = { policyID: string; tagName: string; }; + [SCREENS.WORKSPACE.TAXES_SETTINGS]: { + policyID: string; + }; + [SCREENS.WORKSPACE.TAXES_SETTINGS_CUSTOM_TAX_NAME]: { + policyID: string; + }; + [SCREENS.WORKSPACE.TAXES_SETTINGS_FOREIGN_CURRENCY_DEFAULT]: { + policyID: string; + }; + [SCREENS.WORKSPACE.TAXES_SETTINGS_WORKSPACE_CURRENCY_DEFAULT]: { + policyID: string; + }; [SCREENS.WORKSPACE.MEMBER_DETAILS]: { policyID: string; accountID: string; diff --git a/src/libs/actions/TaxRate.ts b/src/libs/actions/TaxRate.ts new file mode 100644 index 000000000000..aaa94676629c --- /dev/null +++ b/src/libs/actions/TaxRate.ts @@ -0,0 +1,157 @@ +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import * as API from '@libs/API'; +import {WRITE_COMMANDS} from '@libs/API/types'; +import ONYXKEYS from '@src/ONYXKEYS'; +import type {Policy} from '@src/types/onyx'; +import type {OnyxData} from '@src/types/onyx/Request'; + +let allPolicies: OnyxCollection; +Onyx.connect({ + key: ONYXKEYS.COLLECTION.POLICY, + waitForCollectionCallback: true, + callback: (value) => (allPolicies = value), +}); + +function setPolicyCustomTaxName(policyID: string, customTaxName: string) { + const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`]; + const originalCustomTaxName = policy?.taxRates?.defaultValue; + const onyxData: OnyxData = { + optimisticData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + name: customTaxName, + }, + }, + }, + ], + successData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + name: customTaxName, + }, + }, + }, + ], + failureData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + name: originalCustomTaxName, + }, + }, + }, + ], + }; + + const parameters = { + policyID, + customTaxName, + }; + + API.write(WRITE_COMMANDS.SET_POLICY_CUSTOM_TAX_NAME, parameters, onyxData); +} + +function setWorkspaceCurrencyDefault(policyID: string, taxCode: string) { + const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`]; + const originalDefaultExternalID = policy?.taxRates?.defaultExternalID; + const onyxData: OnyxData = { + optimisticData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + defaultExternalID: taxCode, + }, + }, + }, + ], + successData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + defaultExternalID: taxCode, + }, + }, + }, + ], + failureData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + defaultExternalID: originalDefaultExternalID, + }, + }, + }, + ], + }; + + const parameters = { + policyID, + taxCode, + }; + + API.write(WRITE_COMMANDS.SET_POLICY_TAXES_CURRENCY_DEFAULT, parameters, onyxData); +} + +function setForeignCurrencyDefault(policyID: string, taxCode: string) { + const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`]; + const originalDefaultForeignCurrencyID = policy?.taxRates?.foreignTaxDefault; + const onyxData: OnyxData = { + optimisticData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + foreignTaxDefault: taxCode, + }, + }, + }, + ], + successData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + foreignTaxDefault: taxCode, + }, + }, + }, + ], + failureData: [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + taxRates: { + foreignTaxDefault: originalDefaultForeignCurrencyID, + }, + }, + }, + ], + }; + + const parameters = { + policyID, + taxCode, + }; + + API.write(WRITE_COMMANDS.SET_POLICY_TAXES_FOREIGN_CURRENCY_DEFAULT, parameters, onyxData); +} + +export {setWorkspaceCurrencyDefault, setForeignCurrencyDefault, setPolicyCustomTaxName}; diff --git a/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx b/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx index 18123d109645..06caae1800b5 100644 --- a/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx +++ b/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx @@ -17,12 +17,14 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import {openPolicyTaxesPage} from '@libs/actions/Policy'; +import Navigation from '@libs/Navigation/Navigation'; import type {WorkspacesCentralPaneNavigatorParamList} from '@navigation/types'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullscreenLoading'; import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPolicyAndFullscreenLoading'; import CONST from '@src/CONST'; +import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; type WorkspaceTaxesPageProps = WithPolicyAndFullscreenLoadingProps & StackScreenProps; @@ -136,7 +138,7 @@ function WorkspaceTaxesPage({policy, route}: WorkspaceTaxesPageProps) { />