diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 7abcd930cb28..56306a575b52 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -278,6 +278,7 @@ const ROUTES = { // eslint-disable-next-line no-restricted-syntax -- Legacy route generation getRoute: (backTo?: string) => getUrlWithBackToParam('settings/wallet/add-bank-account', backTo), }, + SETTINGS_ADD_BANK_ACCOUNT_VERIFY_ACCOUNT: `settings/wallet/add-bank-account/${VERIFY_ACCOUNT}`, SETTINGS_ADD_US_BANK_ACCOUNT: 'settings/wallet/add-us-bank-account', SETTINGS_ENABLE_PAYMENTS: 'settings/wallet/enable-payments', SETTINGS_WALLET_ENABLE_GLOBAL_REIMBURSEMENTS: { @@ -1580,6 +1581,10 @@ const ROUTES = { return `workspaces/${policyID}/invoices` as const; }, }, + WORKSPACE_INVOICES_VERIFY_ACCOUNT: { + route: `workspaces/:policyID/invoices/${VERIFY_ACCOUNT}`, + getRoute: (policyID: string) => `workspaces/${policyID}/invoices/${VERIFY_ACCOUNT}` as const, + }, WORKSPACE_INVOICES_COMPANY_NAME: { route: 'workspaces/:policyID/invoices/company-name', getRoute: (policyID: string) => `workspaces/${policyID}/invoices/company-name` as const, diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 025ca5f1602b..ec64720526c5 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -95,6 +95,7 @@ const SCREENS = { APP_DOWNLOAD_LINKS: 'Settings_App_Download_Links', ADD_DEBIT_CARD: 'Settings_Add_Debit_Card', ADD_PAYMENT_CARD_CHANGE_CURRENCY: 'Settings_Add_Payment_Card_Change_Currency', + ADD_BANK_ACCOUNT_VERIFY_ACCOUNT: 'Settings_Add_Bank_Account_Verify_Account', ADD_BANK_ACCOUNT: 'Settings_Add_Bank_Account', ADD_US_BANK_ACCOUNT: 'Settings_Add_US_Bank_Account', CLOSE: 'Settings_Close', @@ -564,6 +565,7 @@ const SCREENS = { EXPENSIFY_CARD_SETTINGS_ACCOUNT: 'Workspace_ExpensifyCard_Settings_Account', EXPENSIFY_CARD_SETTINGS_FREQUENCY: 'Workspace_ExpensifyCard_Settings_Frequency', INVOICES: 'Workspace_Invoices', + INVOICES_VERIFY_ACCOUNT: 'Workspace_Invoices_Verify_Account', INVOICES_COMPANY_NAME: 'Workspace_Invoices_Company_Name', INVOICES_COMPANY_WEBSITE: 'Workspace_Invoices_Company_Website', MEMBERS: 'Workspace_Members', diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 425eb87fc42d..eea2848e048b 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -360,6 +360,7 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/EnablePayments/EnablePayments').default, [SCREENS.SETTINGS.WALLET.ENABLE_GLOBAL_REIMBURSEMENTS]: () => require('../../../../pages/settings/Wallet/EnableGlobalReimbursements').default, [SCREENS.SETTINGS.ADD_DEBIT_CARD]: () => require('../../../../pages/settings/Wallet/AddDebitCardPage').default, + [SCREENS.SETTINGS.ADD_BANK_ACCOUNT_VERIFY_ACCOUNT]: () => require('../../../../pages/settings/Wallet/NewBankAccountVerifyAccountPage').default, [SCREENS.SETTINGS.ADD_BANK_ACCOUNT]: () => require('../../../../pages/settings/Wallet/InternationalDepositAccount').default, [SCREENS.SETTINGS.ADD_US_BANK_ACCOUNT]: () => require('../../../../pages/AddPersonalBankAccountPage').default, [SCREENS.SETTINGS.PROFILE.STATUS]: () => require('../../../../pages/settings/Profile/CustomStatus/StatusPage').default, @@ -653,6 +654,7 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/taxes/WorkspaceTaxCodePage').default, [SCREENS.WORKSPACE.INVOICES_COMPANY_NAME]: () => require('../../../../pages/workspace/invoices/WorkspaceInvoicingDetailsName').default, [SCREENS.WORKSPACE.INVOICES_COMPANY_WEBSITE]: () => require('../../../../pages/workspace/invoices/WorkspaceInvoicingDetailsWebsite').default, + [SCREENS.WORKSPACE.INVOICES_VERIFY_ACCOUNT]: () => require('../../../../pages/workspace/invoices/WorkspaceInvoicesVerifyAccountPage').default, [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD]: () => require('../../../../pages/workspace/companyCards/assignCard/AssignCardFeedPage').default, [SCREENS.WORKSPACE.COMPANY_CARDS_SELECT_FEED]: () => require('../../../../pages/workspace/companyCards/WorkspaceCompanyCardFeedSelectorPage').default, [SCREENS.WORKSPACE.COMPANY_CARDS_BANK_CONNECTION]: () => require('../../../../pages/workspace/companyCards/BankConnection').default, diff --git a/src/libs/Navigation/linkingConfig/RELATIONS/SETTINGS_TO_RHP.ts b/src/libs/Navigation/linkingConfig/RELATIONS/SETTINGS_TO_RHP.ts index 5e15142209a4..132c8799467c 100755 --- a/src/libs/Navigation/linkingConfig/RELATIONS/SETTINGS_TO_RHP.ts +++ b/src/libs/Navigation/linkingConfig/RELATIONS/SETTINGS_TO_RHP.ts @@ -41,6 +41,7 @@ const SETTINGS_TO_RHP: Partial['config'] = { path: ROUTES.SETTINGS_ADD_BANK_ACCOUNT.route, exact: true, }, + [SCREENS.SETTINGS.ADD_BANK_ACCOUNT_VERIFY_ACCOUNT]: { + path: ROUTES.SETTINGS_ADD_BANK_ACCOUNT_VERIFY_ACCOUNT, + exact: true, + }, [SCREENS.SETTINGS.ADD_US_BANK_ACCOUNT]: { path: ROUTES.SETTINGS_ADD_US_BANK_ACCOUNT, exact: true, @@ -641,6 +645,10 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.INVOICES_COMPANY_WEBSITE]: { path: ROUTES.WORKSPACE_INVOICES_COMPANY_WEBSITE.route, }, + [SCREENS.WORKSPACE.INVOICES_VERIFY_ACCOUNT]: { + path: ROUTES.WORKSPACE_INVOICES_VERIFY_ACCOUNT.route, + exact: true, + }, [SCREENS.WORKSPACE.COMPANY_CARDS_SELECT_FEED]: { path: ROUTES.WORKSPACE_COMPANY_CARDS_SELECT_FEED.route, }, diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 3720233f8907..56cf020a212e 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -171,6 +171,7 @@ type SettingsNavigatorParamList = { }; [SCREENS.SETTINGS.ADD_DEBIT_CARD]: undefined; [SCREENS.SETTINGS.ADD_BANK_ACCOUNT]: undefined; + [SCREENS.SETTINGS.ADD_BANK_ACCOUNT_VERIFY_ACCOUNT]: undefined; [SCREENS.SETTINGS.ADD_US_BANK_ACCOUNT]: undefined; [SCREENS.SETTINGS.PROFILE.STATUS]: undefined; [SCREENS.SETTINGS.PROFILE.STATUS_CLEAR_AFTER]: undefined; @@ -975,6 +976,9 @@ type SettingsNavigatorParamList = { policyID: string; taxID: string; }; + [SCREENS.WORKSPACE.INVOICES_VERIFY_ACCOUNT]: { + policyID: string; + }; [SCREENS.WORKSPACE.INVOICES_COMPANY_NAME]: { policyID: string; }; @@ -1980,6 +1984,9 @@ type WorkspaceSplitNavigatorParamList = { [SCREENS.WORKSPACE.INVOICES]: { policyID: string; }; + [SCREENS.WORKSPACE.INVOICES_VERIFY_ACCOUNT]: { + policyID: string; + }; [SCREENS.WORKSPACE.MEMBERS]: { policyID: string; }; diff --git a/src/pages/settings/Wallet/NewBankAccountVerifyAccountPage.tsx b/src/pages/settings/Wallet/NewBankAccountVerifyAccountPage.tsx new file mode 100644 index 000000000000..5a6e6d99a2d8 --- /dev/null +++ b/src/pages/settings/Wallet/NewBankAccountVerifyAccountPage.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import VerifyAccountPageBase from '@pages/settings/VerifyAccountPageBase'; +import ROUTES from '@src/ROUTES'; + +function NewBankAccountVerifyAccountPage() { + return ( + + ); +} + +NewBankAccountVerifyAccountPage.displayName = 'NewBankAccountVerifyAccountPage'; + +export default NewBankAccountVerifyAccountPage; diff --git a/src/pages/settings/Wallet/PaymentMethodList.tsx b/src/pages/settings/Wallet/PaymentMethodList.tsx index 908bdaa1a644..4e3abafe1419 100644 --- a/src/pages/settings/Wallet/PaymentMethodList.tsx +++ b/src/pages/settings/Wallet/PaymentMethodList.tsx @@ -82,6 +82,9 @@ type PaymentMethodListProps = { /** Whether the bank accounts should be displayed in private and business sections */ shouldShowBankAccountSections?: boolean; + /** The policy ID associated with the workspace, if component is rendered in workspace context */ + policyID?: string; + /** Function to be called when the user presses the add bank account button */ onAddBankAccountPress?: () => void; @@ -177,6 +180,7 @@ function PaymentMethodList({ shouldShowRightIcon = true, invoiceTransferBankAccountID, shouldShowBankAccountSections = false, + policyID = '', onAddBankAccountPress = () => {}, itemIconRight, filterType, @@ -371,7 +375,12 @@ function PaymentMethodList({ const onPressItem = useCallback(() => { if (!isUserValidated) { - Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHOD_VERIFY_ACCOUNT.getRoute(Navigation.getActiveRoute(), ROUTES.SETTINGS_ADD_BANK_ACCOUNT.route)); + const path = Navigation.getActiveRoute(); + if (path.includes(ROUTES.WORKSPACES_LIST.route) && policyID) { + Navigation.navigate(ROUTES.WORKSPACE_INVOICES_VERIFY_ACCOUNT.getRoute(policyID)); + } else { + Navigation.navigate(ROUTES.SETTINGS_ADD_BANK_ACCOUNT_VERIFY_ACCOUNT); + } return; } onAddBankAccountPress(); diff --git a/src/pages/workspace/invoices/WorkspaceInvoiceVBASection.tsx b/src/pages/workspace/invoices/WorkspaceInvoiceVBASection.tsx index 5a5dd6e2a787..01c25825b800 100644 --- a/src/pages/workspace/invoices/WorkspaceInvoiceVBASection.tsx +++ b/src/pages/workspace/invoices/WorkspaceInvoiceVBASection.tsx @@ -158,6 +158,7 @@ function WorkspaceInvoiceVBASection({policyID}: WorkspaceInvoiceVBASectionProps) actionPaymentMethodType={shouldShowDefaultDeleteMenu ? paymentMethod.selectedPaymentMethodType : ''} style={[styles.mt5, shouldUseNarrowLayout ? styles.mhn5 : styles.mhn8]} listItemStyle={shouldUseNarrowLayout ? styles.ph5 : styles.ph8} + policyID={policyID} /> ; +function WorkspaceInvoicesVerifyAccountPage({route}: WorkspaceInvoicesVerifyAccountPageProps) { + const workspaceInvoicePath = ROUTES.WORKSPACE_INVOICES.getRoute(route.params.policyID); + return ( + + ); +} + +WorkspaceInvoicesVerifyAccountPage.displayName = 'WorkspaceInvoicesVerifyAccountPage'; + +export default WorkspaceInvoicesVerifyAccountPage;