diff --git a/src/components/TransactionDetails/TransactionDetailsReceipt.tsx b/src/components/TransactionDetails/TransactionDetailsReceipt.tsx index 61dfefbac..6784c1503 100644 --- a/src/components/TransactionDetails/TransactionDetailsReceipt.tsx +++ b/src/components/TransactionDetails/TransactionDetailsReceipt.tsx @@ -573,9 +573,23 @@ export const TransactionDetailsReceipt = ({ Eligible for a Peanut Perk! {(() => { - const percentage = transaction.extraDataForDrawer.perk.discountPercentage - const amount = transaction.extraDataForDrawer.perk.amountSponsored - const amountStr = amount ? `$${amount.toFixed(2)}` : '' + const perk = transaction.extraDataForDrawer.perk + const percentage = perk.discountPercentage + const amount = perk.amountSponsored + const isCapped = perk.isCapped + const campaignCap = perk.campaignCapUsd + + // If user hit their campaign cap, show special message + if (isCapped && campaignCap) { + if (amount !== undefined && amount !== null) { + return `$${amount.toFixed(2)} cashback — campaign limit reached! 🎉` + } + return `Campaign limit reached! 🎉` + } + + // For non-capped messages, use amountStr + const amountStr = + amount !== undefined && amount !== null ? `$${amount.toFixed(2)}` : '' if (percentage === 100) { return `You received a full refund${amount ? ` (${amountStr})` : ''} as a Peanut Perk.` diff --git a/src/components/TransactionDetails/transactionTransformer.ts b/src/components/TransactionDetails/transactionTransformer.ts index 3693d7c0b..3fb403479 100644 --- a/src/components/TransactionDetails/transactionTransformer.ts +++ b/src/components/TransactionDetails/transactionTransformer.ts @@ -76,6 +76,9 @@ export interface TransactionDetails { merchantInfo?: { promoDescription?: string } + isCapped?: boolean + campaignCapUsd?: number + remainingCapUsd?: number } depositInstructions?: { amount: string @@ -524,6 +527,9 @@ export function mapTransactionDataForDrawer(entry: HistoryEntry): MappedTransact amountSponsored?: number txHash?: string merchantInfo?: { promoDescription?: string } + isCapped?: boolean + campaignCapUsd?: number + remainingCapUsd?: number } | undefined, depositInstructions: