From ecb99908d45bbbdb28afb91a5431b640cebaf1ab Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Tue, 8 Jun 2021 11:48:32 -1000 Subject: [PATCH 01/25] add business bank account new page --- src/ROUTES.js | 1 + src/components/TextLink.js | 2 +- .../Navigation/AppNavigator/AuthScreens.js | 7 ++ .../AppNavigator/ModalStackNavigators.js | 9 ++ src/libs/Navigation/linkingConfig.js | 5 ++ src/pages/BusinessBankAccount/NewPage.js | 84 +++++++++++++++++++ 6 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 src/pages/BusinessBankAccount/NewPage.js diff --git a/src/ROUTES.js b/src/ROUTES.js index 61c8542be45f..cd6a986f07a6 100644 --- a/src/ROUTES.js +++ b/src/ROUTES.js @@ -9,6 +9,7 @@ const REPORT = 'r'; export default { ADD_BANK_ACCOUNT: 'add-bank-account', + BANK_ACCOUNT_NEW: 'bank-account/new', HOME: '', SETTINGS: 'settings', SETTINGS_PROFILE: 'settings/profile', diff --git a/src/components/TextLink.js b/src/components/TextLink.js index df271d88b4fa..d10474601ba4 100644 --- a/src/components/TextLink.js +++ b/src/components/TextLink.js @@ -10,7 +10,7 @@ const propTypes = { href: PropTypes.string.isRequired, /** Text content child */ - children: PropTypes.string.isRequired, + children: PropTypes.oneOfType([PropTypes.string, PropTypes.array]).isRequired, /** Additional style props */ style: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]), diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.js b/src/libs/Navigation/AppNavigator/AuthScreens.js index 1df7250464ef..868964834bab 100644 --- a/src/libs/Navigation/AppNavigator/AuthScreens.js +++ b/src/libs/Navigation/AppNavigator/AuthScreens.js @@ -50,6 +50,7 @@ import { SettingsModalStackNavigator, EnablePaymentsStackNavigator, AddBankAccountModalStackNavigator, + BusinessBankAccountModalStackNavigator, } from './ModalStackNavigators'; import SCREENS from '../../../SCREENS'; import Timers from '../../Timers'; @@ -271,6 +272,12 @@ class AuthScreens extends React.Component { component={AddBankAccountModalStackNavigator} listeners={modalScreenListeners} /> + ); } diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js index c9ab6088892d..de00f5716ef6 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js @@ -21,6 +21,7 @@ import IOUCurrencySelection from '../../../pages/iou/IOUCurrencySelection'; import ReportParticipantsPage from '../../../pages/ReportParticipantsPage'; import EnablePaymentsPage from '../../../pages/EnablePayments'; import AddBankAccountPage from '../../../pages/AddBankAccountPage'; +import BusinessBankAccountNewPage from '../../../pages/BusinessBankAccount/NewPage'; const defaultSubRouteOptions = { cardStyle: styles.navigationScreenCardStyle, @@ -152,6 +153,13 @@ const AddBankAccountModalStackNavigator = createModalStackNavigator([{ name: 'AddBankAccount_Root', }]); +const BusinessBankAccountModalStackNavigator = createModalStackNavigator([ + { + Component: BusinessBankAccountNewPage, + name: 'BusinessBankAccount_New', + }, +]); + export { IOUBillStackNavigator, IOURequestModalStackNavigator, @@ -164,4 +172,5 @@ export { SettingsModalStackNavigator, EnablePaymentsStackNavigator, AddBankAccountModalStackNavigator, + BusinessBankAccountModalStackNavigator, }; diff --git a/src/libs/Navigation/linkingConfig.js b/src/libs/Navigation/linkingConfig.js index c73f4705a73b..98c4210b9689 100644 --- a/src/libs/Navigation/linkingConfig.js +++ b/src/libs/Navigation/linkingConfig.js @@ -109,6 +109,11 @@ export default { AddBankAccount_Root: ROUTES.ADD_BANK_ACCOUNT, }, }, + BusinessBankAccount: { + screens: { + BusinessBankAccount_New: ROUTES.BANK_ACCOUNT_NEW, + }, + }, EnablePayments: { screens: { EnablePayments_Root: ROUTES.ENABLE_PAYMENTS, diff --git a/src/pages/BusinessBankAccount/NewPage.js b/src/pages/BusinessBankAccount/NewPage.js new file mode 100644 index 000000000000..33597e88ad20 --- /dev/null +++ b/src/pages/BusinessBankAccount/NewPage.js @@ -0,0 +1,84 @@ +import _ from 'underscore'; +import React from 'react'; +import {View, Text} from 'react-native'; +import ScreenWrapper from '../../components/ScreenWrapper'; +import HeaderWithCloseButton from '../../components/HeaderWithCloseButton'; +import MenuItem from '../../components/MenuItem'; +import {Bug, Lock} from '../../components/Icon/Expensicons'; +import styles from '../../styles/styles'; +import TextLink from '../../components/TextLink'; +import Button from '../../components/Button'; +import Icon from '../../components/Icon'; +import colors from '../../styles/colors'; +import Navigation from '../../libs/Navigation/Navigation'; +import Permissions from '../../libs/Permissions'; + +class BusinessBankAccountNewPage extends React.Component { + constructor(props) { + super(props); + this.state = {}; + } + + render() { + if (!Permissions.canUseFreePlan()) { + // This delay is necessary since the "navigator" object is not yet ready - probably we can move to a + // 404 at some point, but not necessary right now. + _.delay(Navigation.dismissModal, 0); + return null; + } + + return ( + + + + + + To get started with the Expensify Card, you first need to add a bank account. + + { + console.log('launching Plaid flow'); + }} + shouldShowRightIcon + /> + { + console.log('connect manually'); + }} + shouldShowRightIcon + /> + + + Privacy + + + Your data is secure + + + + + + + +