From c32b82b492307092f259e108d7331d8a122ee028 Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Mon, 4 Nov 2024 22:21:57 +0100 Subject: [PATCH 1/5] Remove company cards beta --- src/libs/Permissions.ts | 5 -- .../workspace/WorkspaceMoreFeaturesPage.tsx | 49 +++++++++---------- 2 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index 009724e73e93..339a536cbbdb 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -24,10 +24,6 @@ function canUseSpotnanaTravel(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.SPOTNANA_TRAVEL) || canUseAllBetas(betas); } -function canUseCompanyCardFeeds(betas: OnyxEntry): boolean { - return !!betas?.includes(CONST.BETAS.COMPANY_CARD_FEEDS) || canUseAllBetas(betas); -} - function canUseDirectFeeds(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.DIRECT_FEEDS) || canUseAllBetas(betas); } @@ -62,7 +58,6 @@ export default { canUseDupeDetection, canUseP2PDistanceRequests, canUseSpotnanaTravel, - canUseCompanyCardFeeds, canUseDirectFeeds, canUseNetSuiteUSATax, canUseCombinedTrackSubmit, diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 2c9c2975d1d2..f7e82c609e66 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -63,7 +63,6 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro const styles = useThemeStyles(); const {shouldUseNarrowLayout} = useResponsiveLayout(); const {translate} = useLocalize(); - const {canUseCompanyCardFeeds} = usePermissions(); const hasAccountingConnection = !isEmptyObject(policy?.connections); const isAccountingEnabled = !!policy?.areConnectionsEnabled || !isEmptyObject(policy?.connections); const isSyncTaxEnabled = @@ -120,31 +119,29 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro }, ]; - if (canUseCompanyCardFeeds) { - spendItems.push({ - icon: Illustrations.CompanyCard, - titleTranslationKey: 'workspace.moreFeatures.companyCards.title', - subtitleTranslationKey: 'workspace.moreFeatures.companyCards.subtitle', - isActive: policy?.areCompanyCardsEnabled ?? false, - pendingAction: policy?.pendingFields?.areCompanyCardsEnabled, - disabled: !isEmptyObject(CardUtils.removeExpensifyCardFromCompanyCards(cardFeeds?.settings?.companyCards)), - action: (isEnabled: boolean) => { - if (!policyID) { - return; - } - if (isEnabled && !isControlPolicy(policy)) { - Navigation.navigate( - ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.companyCards.alias, ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID)), - ); - return; - } - Policy.enableCompanyCards(policyID, isEnabled); - }, - disabledAction: () => { - setIsDisableCompanyCardsWarningModalOpen(true); - }, - }); - } + spendItems.push({ + icon: Illustrations.CompanyCard, + titleTranslationKey: 'workspace.moreFeatures.companyCards.title', + subtitleTranslationKey: 'workspace.moreFeatures.companyCards.subtitle', + isActive: policy?.areCompanyCardsEnabled ?? false, + pendingAction: policy?.pendingFields?.areCompanyCardsEnabled, + disabled: !isEmptyObject(CardUtils.removeExpensifyCardFromCompanyCards(cardFeeds?.settings?.companyCards)), + action: (isEnabled: boolean) => { + if (!policyID) { + return; + } + if (isEnabled && !isControlPolicy(policy)) { + Navigation.navigate( + ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.companyCards.alias, ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID)), + ); + return; + } + Policy.enableCompanyCards(policyID, isEnabled); + }, + disabledAction: () => { + setIsDisableCompanyCardsWarningModalOpen(true); + }, + }); const manageItems: Item[] = [ { From 6b6599214fd830f1998fe1586e68060af0274bab Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Mon, 4 Nov 2024 22:28:26 +0100 Subject: [PATCH 2/5] Remove direct feeds beta --- src/libs/Permissions.ts | 5 -- .../companyCards/addNew/AddNewCardPage.tsx | 56 +++++++------------ .../addNew/CardInstructionsStep.tsx | 10 ++-- .../companyCards/addNew/CardTypeStep.tsx | 52 ++++++----------- .../companyCards/addNew/DetailsStep.tsx | 4 +- 5 files changed, 42 insertions(+), 85 deletions(-) diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index 339a536cbbdb..0853bd9c18ce 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -24,10 +24,6 @@ function canUseSpotnanaTravel(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.SPOTNANA_TRAVEL) || canUseAllBetas(betas); } -function canUseDirectFeeds(betas: OnyxEntry): boolean { - return !!betas?.includes(CONST.BETAS.DIRECT_FEEDS) || canUseAllBetas(betas); -} - function canUseNetSuiteUSATax(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.NETSUITE_USA_TAX) || canUseAllBetas(betas); } @@ -58,7 +54,6 @@ export default { canUseDupeDetection, canUseP2PDistanceRequests, canUseSpotnanaTravel, - canUseDirectFeeds, canUseNetSuiteUSATax, canUseCombinedTrackSubmit, canUseCategoryAndTagApprovers, diff --git a/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx b/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx index 1a3dce65788f..2fef7016df97 100644 --- a/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx +++ b/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx @@ -1,6 +1,5 @@ import React from 'react'; import {useOnyx} from 'react-native-onyx'; -import usePermissions from '@hooks/usePermissions'; import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullscreenLoading'; import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPolicyAndFullscreenLoading'; import CONST from '@src/CONST'; @@ -17,44 +16,27 @@ import SelectFeedType from './SelectFeedType'; function AddNewCardPage({policy}: WithPolicyAndFullscreenLoadingProps) { const policyID = policy?.id; const [addNewCardFeed] = useOnyx(ONYXKEYS.ADD_NEW_COMPANY_CARD); - const {canUseDirectFeeds} = usePermissions(); - const {currentStep} = addNewCardFeed ?? {}; - if (canUseDirectFeeds) { - switch (currentStep) { - case CONST.COMPANY_CARDS.STEP.SELECT_BANK: - return ; - case CONST.COMPANY_CARDS.STEP.SELECT_FEED_TYPE: - return ; - case CONST.COMPANY_CARDS.STEP.CARD_TYPE: - return ; - case CONST.COMPANY_CARDS.STEP.BANK_CONNECTION: - return ; - case CONST.COMPANY_CARDS.STEP.CARD_INSTRUCTIONS: - return ; - case CONST.COMPANY_CARDS.STEP.CARD_NAME: - return ; - case CONST.COMPANY_CARDS.STEP.CARD_DETAILS: - return ; - case CONST.COMPANY_CARDS.STEP.AMEX_CUSTOM_FEED: - return ; - default: - return ; - } - } else { - switch (currentStep) { - case CONST.COMPANY_CARDS.STEP.CARD_TYPE: - return ; - case CONST.COMPANY_CARDS.STEP.CARD_INSTRUCTIONS: - return ; - case CONST.COMPANY_CARDS.STEP.CARD_NAME: - return ; - case CONST.COMPANY_CARDS.STEP.CARD_DETAILS: - return ; - default: - return ; - } + switch (currentStep) { + case CONST.COMPANY_CARDS.STEP.SELECT_BANK: + return ; + case CONST.COMPANY_CARDS.STEP.SELECT_FEED_TYPE: + return ; + case CONST.COMPANY_CARDS.STEP.CARD_TYPE: + return ; + case CONST.COMPANY_CARDS.STEP.BANK_CONNECTION: + return ; + case CONST.COMPANY_CARDS.STEP.CARD_INSTRUCTIONS: + return ; + case CONST.COMPANY_CARDS.STEP.CARD_NAME: + return ; + case CONST.COMPANY_CARDS.STEP.CARD_DETAILS: + return ; + case CONST.COMPANY_CARDS.STEP.AMEX_CUSTOM_FEED: + return ; + default: + return ; } } diff --git a/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx b/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx index 1b49074a116a..969625b224d6 100644 --- a/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx +++ b/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx @@ -9,7 +9,6 @@ import ScrollView from '@components/ScrollView'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; -import usePermissions from '@hooks/usePermissions'; import useThemeStyles from '@hooks/useThemeStyles'; import * as CardUtils from '@libs/CardUtils'; import Parser from '@libs/Parser'; @@ -26,7 +25,6 @@ function CardInstructionsStep({policyID}: CardInstructionsStepProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const {isOffline} = useNetwork(); - const {canUseDirectFeeds} = usePermissions(); const [addNewCard] = useOnyx(ONYXKEYS.ADD_NEW_COMPANY_CARD); @@ -40,12 +38,12 @@ function CardInstructionsStep({policyID}: CardInstructionsStepProps) { const buttonTranslation = isStripeFeedProvider ? translate('common.submit') : translate('common.next'); const submit = () => { - if (canUseDirectFeeds && isStripeFeedProvider) { + if (isStripeFeedProvider) { Card.updateSelectedFeed(feedProvider, policyID ?? '-1'); Navigation.goBack(); return; } - if (!canUseDirectFeeds || isOtherBankSelected) { + if (isOtherBankSelected) { CompanyCards.setAddNewCompanyCardStepAndData({ step: CONST.COMPANY_CARDS.STEP.CARD_NAME, }); @@ -57,13 +55,13 @@ function CardInstructionsStep({policyID}: CardInstructionsStepProps) { }; const handleBackButtonPress = () => { - if (canUseDirectFeeds && isAmexFeedProvider) { + if (isAmexFeedProvider) { CompanyCards.setAddNewCompanyCardStepAndData({ step: CONST.COMPANY_CARDS.STEP.AMEX_CUSTOM_FEED, }); return; } - if (canUseDirectFeeds && isStripeFeedProvider) { + if (isStripeFeedProvider) { CompanyCards.setAddNewCompanyCardStepAndData({step: CONST.COMPANY_CARDS.STEP.SELECT_BANK}); return; } diff --git a/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx b/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx index 03dd2e9e63cd..186c6a939d9d 100644 --- a/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx +++ b/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx @@ -12,9 +12,7 @@ import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; -import usePermissions from '@hooks/usePermissions'; import useThemeStyles from '@hooks/useThemeStyles'; -import Navigation from '@navigation/Navigation'; import variables from '@styles/variables'; import * as CompanyCards from '@userActions/CompanyCards'; import CONST from '@src/CONST'; @@ -22,14 +20,27 @@ import ONYXKEYS from '@src/ONYXKEYS'; import type {CardFeedProvider} from '@src/types/onyx/CardFeeds'; type AvailableCompanyCardTypes = { - isAmexAvailable?: boolean; translate: LocaleContextProps['translate']; typeSelected?: CardFeedProvider; styles: StyleProp; }; -function getAvailableCompanyCardTypes({isAmexAvailable, translate, typeSelected, styles}: AvailableCompanyCardTypes) { - const defaultTypes = [ +function getAvailableCompanyCardTypes({translate, typeSelected, styles}: AvailableCompanyCardTypes) { + return [ + { + value: CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, + text: translate('workspace.companyCards.addNewCard.cardProviders.gl1025'), + keyForList: CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, + isSelected: typeSelected === CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, + leftElement: ( + + ), + }, { value: CONST.COMPANY_CARD.FEED_BANK_NAME.MASTER_CARD, text: translate('workspace.companyCards.addNewCard.cardProviders.cdf'), @@ -59,28 +70,6 @@ function getAvailableCompanyCardTypes({isAmexAvailable, translate, typeSelected, ), }, ]; - - if (!isAmexAvailable) { - return defaultTypes; - } - - return [ - { - value: CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, - text: translate('workspace.companyCards.addNewCard.cardProviders.gl1025'), - keyForList: CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, - isSelected: typeSelected === CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, - leftElement: ( - - ), - }, - ...defaultTypes, - ]; } function CardTypeStep() { @@ -88,9 +77,8 @@ function CardTypeStep() { const styles = useThemeStyles(); const [addNewCard] = useOnyx(ONYXKEYS.ADD_NEW_COMPANY_CARD); const [typeSelected, setTypeSelected] = useState(); - const {canUseDirectFeeds} = usePermissions(); const [isError, setIsError] = useState(false); - const data = getAvailableCompanyCardTypes({isAmexAvailable: !canUseDirectFeeds, translate, typeSelected, styles: styles.mr3}); + const data = getAvailableCompanyCardTypes({translate, typeSelected, styles: styles.mr3}); const submit = () => { if (!typeSelected) { @@ -111,11 +99,7 @@ function CardTypeStep() { }, [addNewCard?.data.feedType]); const handleBackButtonPress = () => { - if (canUseDirectFeeds) { - CompanyCards.setAddNewCompanyCardStepAndData({step: CONST.COMPANY_CARDS.STEP.SELECT_BANK}); - } else { - Navigation.goBack(); - } + CompanyCards.setAddNewCompanyCardStepAndData({step: CONST.COMPANY_CARDS.STEP.SELECT_BANK}); }; return ( diff --git a/src/pages/workspace/companyCards/addNew/DetailsStep.tsx b/src/pages/workspace/companyCards/addNew/DetailsStep.tsx index c4b427578a52..a75c57584c00 100644 --- a/src/pages/workspace/companyCards/addNew/DetailsStep.tsx +++ b/src/pages/workspace/companyCards/addNew/DetailsStep.tsx @@ -10,7 +10,6 @@ import Text from '@components/Text'; import TextInput from '@components/TextInput'; import useAutoFocusInput from '@hooks/useAutoFocusInput'; import useLocalize from '@hooks/useLocalize'; -import usePermissions from '@hooks/usePermissions'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ValidationUtils from '@libs/ValidationUtils'; import Navigation from '@navigation/Navigation'; @@ -29,7 +28,6 @@ function DetailsStep({policyID}: DetailsStepProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const {inputCallbackRef} = useAutoFocusInput(); - const {canUseDirectFeeds} = usePermissions(); const [addNewCard] = useOnyx(ONYXKEYS.ADD_NEW_COMPANY_CARD); const feedProvider = addNewCard?.data?.feedType; const isStripeFeedProvider = feedProvider === CONST.COMPANY_CARD.FEED_BANK_NAME.STRIPE; @@ -53,7 +51,7 @@ function DetailsStep({policyID}: DetailsStepProps) { }; const handleBackButtonPress = () => { - if (!canUseDirectFeeds || isOtherBankSelected) { + if (isOtherBankSelected) { CompanyCards.setAddNewCompanyCardStepAndData({step: CONST.COMPANY_CARDS.STEP.CARD_NAME}); return; } From 05c85c571a03fa8ef6fbef0dc6dfd1da0c84379d Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Mon, 4 Nov 2024 22:29:34 +0100 Subject: [PATCH 3/5] Remove unused import --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index f7e82c609e66..13e4264e278e 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -12,7 +12,6 @@ import Section from '@components/Section'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; -import usePermissions from '@hooks/usePermissions'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useThemeStyles from '@hooks/useThemeStyles'; import * as CardUtils from '@libs/CardUtils'; From 64dec2533b50c001bb326c860afe5d85b6e514b3 Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Mon, 4 Nov 2024 23:56:25 +0100 Subject: [PATCH 4/5] Prettier --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 13e4264e278e..11acbda1ebbe 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -130,9 +130,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro return; } if (isEnabled && !isControlPolicy(policy)) { - Navigation.navigate( - ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.companyCards.alias, ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID)), - ); + Navigation.navigate(ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.companyCards.alias, ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID))); return; } Policy.enableCompanyCards(policyID, isEnabled); From 68f8c90105e993ffea071eea5e2e074a7896f2dc Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Wed, 6 Nov 2024 00:50:05 +0100 Subject: [PATCH 5/5] Remove Amex option --- .../workspace/companyCards/addNew/CardTypeStep.tsx | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx b/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx index 186c6a939d9d..f9171a79eed4 100644 --- a/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx +++ b/src/pages/workspace/companyCards/addNew/CardTypeStep.tsx @@ -27,20 +27,6 @@ type AvailableCompanyCardTypes = { function getAvailableCompanyCardTypes({translate, typeSelected, styles}: AvailableCompanyCardTypes) { return [ - { - value: CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, - text: translate('workspace.companyCards.addNewCard.cardProviders.gl1025'), - keyForList: CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, - isSelected: typeSelected === CONST.COMPANY_CARD.FEED_BANK_NAME.AMEX, - leftElement: ( - - ), - }, { value: CONST.COMPANY_CARD.FEED_BANK_NAME.MASTER_CARD, text: translate('workspace.companyCards.addNewCard.cardProviders.cdf'),