diff --git a/src/CONST.ts b/src/CONST.ts index cf3facb0d1d8..03f58dce48c5 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -34,6 +34,8 @@ const CURRENT_YEAR = new Date().getFullYear(); const PULL_REQUEST_NUMBER = Config?.PULL_REQUEST_NUMBER ?? ''; const MAX_DATE = dateAdd(new Date(), {years: 1}); const MIN_DATE = dateSubtract(new Date(), {years: 20}); +const EXPENSIFY_POLICY_DOMAIN = 'expensify-policy'; +const EXPENSIFY_POLICY_DOMAIN_EXTENSION = '.exfy'; const keyModifierControl = KeyCommand?.constants?.keyModifierControl ?? 'keyModifierControl'; const keyModifierCommand = KeyCommand?.constants?.keyModifierCommand ?? 'keyModifierCommand'; @@ -723,8 +725,8 @@ const CONST = { INBOX: 'inbox', }, - EXPENSIFY_POLICY_DOMAIN: 'expensify-policy', - EXPENSIFY_POLICY_DOMAIN_EXTENSION: '.exfy', + EXPENSIFY_POLICY_DOMAIN, + EXPENSIFY_POLICY_DOMAIN_EXTENSION, SIGN_IN_FORM_WIDTH: 300, @@ -2564,6 +2566,10 @@ const CONST = { SHORT_MENTION: new RegExp(`@[\\w\\-\\+\\'#@]+(?:\\.[\\w\\-\\'\\+]+)*(?![^\`]*\`)`, 'gim'), REPORT_ID_FROM_PATH: /\/r\/(\d+)/, + + get EXPENSIFY_POLICY_DOMAIN_NAME() { + return new RegExp(`${EXPENSIFY_POLICY_DOMAIN}([a-zA-Z0-9]+)\\${EXPENSIFY_POLICY_DOMAIN_EXTENSION}`); + }, }, PRONOUNS: { diff --git a/src/pages/settings/Wallet/PaymentMethodList.tsx b/src/pages/settings/Wallet/PaymentMethodList.tsx index 0d127e3346ae..5f77ac33becf 100644 --- a/src/pages/settings/Wallet/PaymentMethodList.tsx +++ b/src/pages/settings/Wallet/PaymentMethodList.tsx @@ -24,6 +24,7 @@ import * as CardUtils from '@libs/CardUtils'; import Log from '@libs/Log'; import Navigation from '@libs/Navigation/Navigation'; import * as PaymentUtils from '@libs/PaymentUtils'; +import * as PolicyUtils from '@libs/PolicyUtils'; import variables from '@styles/variables'; import * as PaymentMethods from '@userActions/PaymentMethods'; import CONST from '@src/CONST'; @@ -199,6 +200,16 @@ function PaymentMethodList({ const {isOffline} = useNetwork(); const [isUserValidated] = useOnyx(ONYXKEYS.USER, {selector: (user) => !!user?.validated}); + const getDescriptionForPolicyDomainCard = (domainName: string): string => { + // A domain name containing a policyID indicates that this is a workspace feed + const policyID = domainName.match(CONST.REGEX.EXPENSIFY_POLICY_DOMAIN_NAME)?.[1]; + if (policyID) { + const policy = PolicyUtils.getPolicy(policyID.toUpperCase()); + return policy?.name ?? domainName; + } + return domainName; + }; + const filteredPaymentMethods = useMemo(() => { if (shouldShowAssignedCards) { const assignedCards = Object.values(cardList ?? {}) @@ -214,7 +225,7 @@ function PaymentMethodList({ assignedCardsGrouped.push({ key: card.cardID.toString(), title: card.bank, - description: card.domainName, + description: getDescriptionForPolicyDomainCard(card.domainName), shouldShowRightIcon: false, interactive: false, canDismissError: false, @@ -245,7 +256,7 @@ function PaymentMethodList({ key: card.cardID.toString(), // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing title: card?.nameValuePairs?.cardTitle || card.bank, - description: card.domainName, + description: getDescriptionForPolicyDomainCard(card.domainName), onPress: () => Navigation.navigate(ROUTES.SETTINGS_WALLET_DOMAINCARD.getRoute(String(card.cardID))), isGroupedCardDomain: !isAdminIssuedVirtualCard, shouldShowRightIcon: true,