From b2a5dac17597fac3ca69f79d0853f36bfdb7fc56 Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Fri, 20 Sep 2024 19:38:28 +0700 Subject: [PATCH 1/8] feat: add translations --- src/languages/en.ts | 2 ++ src/languages/es.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/languages/en.ts b/src/languages/en.ts index bd5ff405529e..cd0c542b2fd3 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2882,6 +2882,8 @@ export default { expensifyCard: { issueAndManageCards: 'Issue and manage your Expensify Cards', getStartedIssuing: 'Get started by issuing your first virtual or physical card.', + verificationInProgress: 'Verification in progress...', + verifyingTheDetails: "We're verifying a few details. Concierge will let you know when Expensify Cards are ready to issue.", disclaimer: 'The Expensify Visa® Commercial Card is issued by The Bancorp Bank, N.A., Member FDIC, pursuant to a license from Visa U.S.A. Inc. and may not be used at all merchants that accept Visa cards. Apple® and the Apple logo® are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc. Google Play and the Google Play logo are trademarks of Google LLC.', issueCard: 'Issue card', diff --git a/src/languages/es.ts b/src/languages/es.ts index 2f11de46faed..7a5f613f3df3 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2927,6 +2927,8 @@ export default { expensifyCard: { issueAndManageCards: 'Emitir y gestionar Tarjetas Expensify', getStartedIssuing: 'Empieza emitiendo tu primera tarjeta virtual o física.', + verificationInProgress: 'Verificación en curso...', + verifyingTheDetails: "We're verifying a few details. Concierge will let you know when Expensify Cards are ready to issue.", disclaimer: 'La tarjeta comercial Expensify Visa® es emitida por The Bancorp Bank, N.A., miembro de la FDIC, en virtud de una licencia de Visa U.S.A. Inc. y no puede utilizarse en todos los comercios que aceptan tarjetas Visa. Apple® y el logotipo de Apple® son marcas comerciales de Apple Inc. registradas en EE.UU. y otros países. App Store es una marca de servicio de Apple Inc. Google Play y el logotipo de Google Play son marcas comerciales de Google LLC.', issueCard: 'Emitir tarjeta', From 5e6a468e538e25632efb12dba0ed58319583c998 Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Fri, 20 Sep 2024 20:12:43 +0700 Subject: [PATCH 2/8] feat: change modal text and hide the buttons for unverified bank account --- .../workspace/expensifyCard/EmptyCardView.tsx | 14 +++++++++++--- .../WorkspaceExpensifyCardListPage.tsx | 17 ++++++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/pages/workspace/expensifyCard/EmptyCardView.tsx b/src/pages/workspace/expensifyCard/EmptyCardView.tsx index d3eb3a15fae8..b2915823ab8d 100644 --- a/src/pages/workspace/expensifyCard/EmptyCardView.tsx +++ b/src/pages/workspace/expensifyCard/EmptyCardView.tsx @@ -13,7 +13,15 @@ import useWindowDimensions from '@hooks/useWindowDimensions'; import colors from '@styles/theme/colors'; import CONST from '@src/CONST'; -function EmptyCardView() { +type EmptyCardViewProps = { + /** Title of the empty state */ + title: string; + + /** Subtitle of the empty state */ + subtitle: string; +}; + +function EmptyCardView({title, subtitle}: EmptyCardViewProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const {windowHeight} = useWindowDimensions(); @@ -35,8 +43,8 @@ function EmptyCardView() { }, shouldUseNarrowLayout && {maxHeight: 250}, ]} - title={translate('workspace.expensifyCard.issueAndManageCards')} - subtitle={translate('workspace.expensifyCard.getStartedIssuing')} + title={title} + subtitle={subtitle} minModalHeight={500} /> diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 25de151bbb6d..044fbeddf506 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -16,6 +16,7 @@ import usePolicy from '@hooks/usePolicy'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useThemeStyles from '@hooks/useThemeStyles'; import * as CardUtils from '@libs/CardUtils'; +import * as PolicyUtils from '@libs/PolicyUtils'; import Navigation from '@navigation/Navigation'; import type {FullScreenNavigatorParamList} from '@navigation/types'; import CONST from '@src/CONST'; @@ -43,7 +44,14 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa const policyID = route.params.policyID; const policy = usePolicy(policyID); + const workspaceAccountID = PolicyUtils.getWorkspaceAccountID(policyID); const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); + const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`); + + const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0; + const [bankAccountsList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); + + const isBankAccountVerified = bankAccountsList?.[paymentBankAccountID]?.accountData?.approvedBy !== 'Automatic'; const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]); @@ -115,11 +123,14 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa shouldShowBackButton={shouldUseNarrowLayout} onBackButtonPress={() => Navigation.goBack()} > - {!shouldUseNarrowLayout && getHeaderButtons()} + {!shouldUseNarrowLayout && isBankAccountVerified && getHeaderButtons()} - {shouldUseNarrowLayout && {getHeaderButtons()}} + {shouldUseNarrowLayout && isBankAccountVerified && {getHeaderButtons()}} {isEmptyObject(cardsList) ? ( - + ) : ( Date: Fri, 20 Sep 2024 20:37:58 +0700 Subject: [PATCH 3/8] fix: fix header height for mobile --- src/hooks/useEmptyViewHeaderHeight/index.ios.ts | 5 +++-- src/hooks/useEmptyViewHeaderHeight/index.ts | 6 ++++-- src/pages/workspace/expensifyCard/EmptyCardView.tsx | 7 +++++-- .../expensifyCard/WorkspaceExpensifyCardListPage.tsx | 4 +++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/hooks/useEmptyViewHeaderHeight/index.ios.ts b/src/hooks/useEmptyViewHeaderHeight/index.ios.ts index d59e105574bf..d74e713f4b07 100644 --- a/src/hooks/useEmptyViewHeaderHeight/index.ios.ts +++ b/src/hooks/useEmptyViewHeaderHeight/index.ios.ts @@ -1,10 +1,11 @@ import useSafeAreaInsets from '@hooks/useSafeAreaInsets'; import {BUTTON_HEIGHT, BUTTON_MARGIN, HEADER_HEIGHT} from './const'; -function useEmptyViewHeaderHeight(isSmallScreenWidth: boolean): number { +function useEmptyViewHeaderHeight(isSmallScreenWidth: boolean, areHeaderButtonsDisplayed: boolean): number { const safeAreaInsets = useSafeAreaInsets(); + const BUTTONS_HEIGHT = areHeaderButtonsDisplayed ? BUTTON_HEIGHT + BUTTON_MARGIN : 0; - return isSmallScreenWidth ? HEADER_HEIGHT + BUTTON_HEIGHT + BUTTON_MARGIN + safeAreaInsets.top : HEADER_HEIGHT; + return isSmallScreenWidth ? HEADER_HEIGHT + BUTTONS_HEIGHT + safeAreaInsets.top : HEADER_HEIGHT; } export default useEmptyViewHeaderHeight; diff --git a/src/hooks/useEmptyViewHeaderHeight/index.ts b/src/hooks/useEmptyViewHeaderHeight/index.ts index d241d95b236f..3f0c34d340fa 100644 --- a/src/hooks/useEmptyViewHeaderHeight/index.ts +++ b/src/hooks/useEmptyViewHeaderHeight/index.ts @@ -1,7 +1,9 @@ import {BUTTON_HEIGHT, BUTTON_MARGIN, HEADER_HEIGHT} from './const'; -function useEmptyViewHeaderHeight(isSmallScreenWidth: boolean): number { - return isSmallScreenWidth ? HEADER_HEIGHT + BUTTON_HEIGHT + BUTTON_MARGIN : HEADER_HEIGHT; +function useEmptyViewHeaderHeight(isSmallScreenWidth: boolean, areHeaderButtonsDisplayed: boolean): number { + const BUTTONS_HEIGHT = areHeaderButtonsDisplayed ? BUTTON_HEIGHT + BUTTON_MARGIN : 0; + + return isSmallScreenWidth ? HEADER_HEIGHT + BUTTONS_HEIGHT : HEADER_HEIGHT; } export default useEmptyViewHeaderHeight; diff --git a/src/pages/workspace/expensifyCard/EmptyCardView.tsx b/src/pages/workspace/expensifyCard/EmptyCardView.tsx index b2915823ab8d..24162e7c2b48 100644 --- a/src/pages/workspace/expensifyCard/EmptyCardView.tsx +++ b/src/pages/workspace/expensifyCard/EmptyCardView.tsx @@ -19,15 +19,18 @@ type EmptyCardViewProps = { /** Subtitle of the empty state */ subtitle: string; + + /** Whether the header buttons be displayed */ + areHeaderButtonsDisplayed: boolean; }; -function EmptyCardView({title, subtitle}: EmptyCardViewProps) { +function EmptyCardView({title, subtitle, areHeaderButtonsDisplayed}: EmptyCardViewProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const {windowHeight} = useWindowDimensions(); const {shouldUseNarrowLayout} = useResponsiveLayout(); - const headerHeight = useEmptyViewHeaderHeight(shouldUseNarrowLayout); + const headerHeight = useEmptyViewHeaderHeight(shouldUseNarrowLayout, areHeaderButtonsDisplayed); return ( diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 044fbeddf506..40a9d63f10c2 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -51,7 +51,8 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0; const [bankAccountsList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); - const isBankAccountVerified = bankAccountsList?.[paymentBankAccountID]?.accountData?.approvedBy !== 'Automatic'; + // TODO: change approvedBy check for more accurate verification status + const isBankAccountVerified = bankAccountsList?.[paymentBankAccountID]?.accountData?.approvedBy === 'Automatic'; const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]); @@ -128,6 +129,7 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa {shouldUseNarrowLayout && isBankAccountVerified && {getHeaderButtons()}} {isEmptyObject(cardsList) ? ( From c0e22484138a160d5532f171e28e1261db0080e3 Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Sat, 21 Sep 2024 08:05:56 +0700 Subject: [PATCH 4/8] fix: apply requested changes --- src/pages/workspace/expensifyCard/EmptyCardView.tsx | 2 +- .../workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/expensifyCard/EmptyCardView.tsx b/src/pages/workspace/expensifyCard/EmptyCardView.tsx index 24162e7c2b48..f71f837be50e 100644 --- a/src/pages/workspace/expensifyCard/EmptyCardView.tsx +++ b/src/pages/workspace/expensifyCard/EmptyCardView.tsx @@ -20,7 +20,7 @@ type EmptyCardViewProps = { /** Subtitle of the empty state */ subtitle: string; - /** Whether the header buttons be displayed */ + /** Whether the header buttons are displayed */ areHeaderButtonsDisplayed: boolean; }; diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 40a9d63f10c2..b3864088324d 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -51,8 +51,7 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0; const [bankAccountsList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); - // TODO: change approvedBy check for more accurate verification status - const isBankAccountVerified = bankAccountsList?.[paymentBankAccountID]?.accountData?.approvedBy === 'Automatic'; + const isBankAccountVerified = bankAccountsList?.[paymentBankAccountID]?.accountData?.state === CONST.BANK_ACCOUNT.STATE.OPEN; const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]); From 6bd9d7bd2d0debfeb98f2c2785b810c9e2b452f6 Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Fri, 25 Oct 2024 18:51:28 +0700 Subject: [PATCH 5/8] fix: change the condition based on we display the modal --- src/ONYXKEYS.ts | 4 +++ .../WorkspaceExpensifyCardListPage.tsx | 7 ++---- src/types/onyx/CardOnWaitlist.ts | 25 +++++++++++++++++++ src/types/onyx/index.ts | 2 ++ 4 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 src/types/onyx/CardOnWaitlist.ts diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 427e05052ae3..ec67a177d072 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -527,6 +527,9 @@ const ONYXKEYS = { /** Currently displaying feed */ LAST_SELECTED_FEED: 'lastSelectedFeed_', + + /** Whether the bank account chosen for Expensify Card in on verification waitlist */ + NVP_EXPENSIFY_ON_CARD_WAITLIST: 'nvp_expensify_onCardWaitlist', }, /** List of Form ids */ @@ -857,6 +860,7 @@ type OnyxCollectionValuesMapping = { [ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION]: OnyxTypes.PolicyConnectionName; [ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION]: boolean; [ONYXKEYS.COLLECTION.LAST_SELECTED_FEED]: OnyxTypes.CompanyCardFeed; + [ONYXKEYS.COLLECTION.NVP_EXPENSIFY_ON_CARD_WAITLIST]: OnyxTypes.CardOnWaitlist; }; type OnyxValuesMapping = { diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 8f27e745083c..7be3e496c93b 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -47,12 +47,9 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa const policy = usePolicy(policyID); const workspaceAccountID = PolicyUtils.getWorkspaceAccountID(policyID); const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); - const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`); + const [cardOnWaitlist] = useOnyx(`${ONYXKEYS.COLLECTION.NVP_EXPENSIFY_ON_CARD_WAITLIST}${policyID}`); - const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0; - const [bankAccountsList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); - - const isBankAccountVerified = bankAccountsList?.[paymentBankAccountID]?.accountData?.state === CONST.BANK_ACCOUNT.STATE.OPEN; + const isBankAccountVerified = !!cardOnWaitlist; const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]); diff --git a/src/types/onyx/CardOnWaitlist.ts b/src/types/onyx/CardOnWaitlist.ts new file mode 100644 index 000000000000..ba09374996de --- /dev/null +++ b/src/types/onyx/CardOnWaitlist.ts @@ -0,0 +1,25 @@ +/** Card on waitlist data model */ +type CardOnWaitlist = { + /** Whether the user uses the bank account on another domain */ + bankAccountIsNotOn0therDomain: boolean; + + /** Domain name in "+@expensify-policy.exfy" format */ + domainName: string; + + /** Whether the user has a balance checked */ + hasBalanceBeenChecked: boolean; + + /** Whether the user has a verified account */ + hasVerifiedAccount: boolean; + + /** Whether the user has a withdrawal account */ + hasWithdrawalAccount: string; + + /** Whether the user is a member of a private domain */ + isMember0fPrivateDomain: boolean; + + /** Whether the account passed the latest checks */ + passedLatestChecks: boolean; +}; + +export default CardOnWaitlist; diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index fe559aab3aa9..aaf15d764157 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -13,6 +13,7 @@ import type Card from './Card'; import type {CardList, IssueNewCard, WorkspaceCardsList} from './Card'; import type CardFeeds from './CardFeeds'; import type {AddNewCompanyCardFeed, CompanyCardFeed} from './CardFeeds'; +import type CardOnWaitlist from './CardOnWaitlist'; import type {CapturedLogs, Log} from './Console'; import type Credentials from './Credentials'; import type Currency from './Currency'; @@ -123,6 +124,7 @@ export type { Currency, CurrencyList, CustomStatusDraft, + CardOnWaitlist, DismissedReferralBanners, Download, WorkspaceCardsList, From 0f2882a2f413ded9c21e2ec80e233b19ef122bde Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Fri, 25 Oct 2024 18:51:53 +0700 Subject: [PATCH 6/8] fix: minor fix --- .../workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 7be3e496c93b..5d2fdaf28c9f 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -49,7 +49,7 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); const [cardOnWaitlist] = useOnyx(`${ONYXKEYS.COLLECTION.NVP_EXPENSIFY_ON_CARD_WAITLIST}${policyID}`); - const isBankAccountVerified = !!cardOnWaitlist; + const isBankAccountVerified = !cardOnWaitlist; const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]); From 9c91a30ad518a9c0dd49ab445ac244c5bc30ee53 Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Fri, 25 Oct 2024 19:46:51 +0700 Subject: [PATCH 7/8] fix: add missing _ --- src/ONYXKEYS.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index ec67a177d072..2af706c772bf 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -529,7 +529,7 @@ const ONYXKEYS = { LAST_SELECTED_FEED: 'lastSelectedFeed_', /** Whether the bank account chosen for Expensify Card in on verification waitlist */ - NVP_EXPENSIFY_ON_CARD_WAITLIST: 'nvp_expensify_onCardWaitlist', + NVP_EXPENSIFY_ON_CARD_WAITLIST: 'nvp_expensify_onCardWaitlist_', }, /** List of Form ids */ From 4532fdeee15b085e94bebbbb90f019fc6eec87a3 Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Mon, 28 Oct 2024 21:17:03 +0700 Subject: [PATCH 8/8] fix: change verifying modal illustration --- .../workspace/expensifyCard/EmptyCardView.tsx | 41 +++++++++---------- .../WorkspaceExpensifyCardListPage.tsx | 6 +-- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/pages/workspace/expensifyCard/EmptyCardView.tsx b/src/pages/workspace/expensifyCard/EmptyCardView.tsx index f71f837be50e..1902a4c60810 100644 --- a/src/pages/workspace/expensifyCard/EmptyCardView.tsx +++ b/src/pages/workspace/expensifyCard/EmptyCardView.tsx @@ -14,23 +14,17 @@ import colors from '@styles/theme/colors'; import CONST from '@src/CONST'; type EmptyCardViewProps = { - /** Title of the empty state */ - title: string; - - /** Subtitle of the empty state */ - subtitle: string; - - /** Whether the header buttons are displayed */ - areHeaderButtonsDisplayed: boolean; + /** Whether the bank account is verified */ + isBankAccountVerified: boolean; }; -function EmptyCardView({title, subtitle, areHeaderButtonsDisplayed}: EmptyCardViewProps) { +function EmptyCardView({isBankAccountVerified}: EmptyCardViewProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const {windowHeight} = useWindowDimensions(); const {shouldUseNarrowLayout} = useResponsiveLayout(); - const headerHeight = useEmptyViewHeaderHeight(shouldUseNarrowLayout, areHeaderButtonsDisplayed); + const headerHeight = useEmptyViewHeaderHeight(shouldUseNarrowLayout, isBankAccountVerified); return ( @@ -38,17 +32,22 @@ function EmptyCardView({title, subtitle, areHeaderButtonsDisplayed}: EmptyCardVi {translate('workspace.expensifyCard.disclaimer')} diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 5d2fdaf28c9f..8709b2864fda 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -126,11 +126,7 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa {shouldUseNarrowLayout && isBankAccountVerified && {getHeaderButtons()}} {isEmptyObject(cardsList) ? ( - + ) : (