import { isDefined } from '@rnw-community/shared'; import type { PaymentDetailsModifier } from '../@standard/w3c/payment-details-modifier'; import type { PaymentItem } from '../@standard/w3c/payment-item'; import type { PaymentMethodNameEnum } from '../enum/payment-method-name.enum'; import type { ResolvedPaymentDetailsInterface } from '../interface/resolved-payment-details.interface'; export const resolvePaymentDetailsModifier = ( platformSupportedMethod: PaymentMethodNameEnum, total: PaymentItem, displayItems: PaymentItem[] = [], modifiers: PaymentDetailsModifier[] = [] ): ResolvedPaymentDetailsInterface => { const modifier = modifiers.find(candidate => candidate.supportedMethods === platformSupportedMethod); if (!isDefined(modifier)) { return { displayItems, total }; } return { displayItems: [...displayItems, ...(modifier.additionalDisplayItems ?? [])], total: modifier.total ?? total, }; };