fix(channels): sanitize card data and format suffixes
This commit is contained in:
@@ -71,14 +71,12 @@ const TXN_SCENES = [
|
||||
|
||||
function getChannelIdentifier(channel: ChannelWithAccountNames): string {
|
||||
if (channel.channelType === "PAYMENT_CARD") {
|
||||
let suffix = channel.cardNumberSuffix?.trim()
|
||||
if (
|
||||
!suffix &&
|
||||
channel.cardNumberFull &&
|
||||
channel.cardNumberFull.length >= 4
|
||||
) {
|
||||
suffix = channel.cardNumberFull.slice(-4)
|
||||
}
|
||||
const digits = (
|
||||
channel.cardNumberSuffix ||
|
||||
channel.cardNumberFull ||
|
||||
""
|
||||
).replace(/\D/g, "")
|
||||
const suffix = digits.length >= 4 ? digits.slice(-4) : digits
|
||||
return suffix ? `•••• ${suffix}` : ""
|
||||
}
|
||||
if (channel.channelType === "E_WALLET") {
|
||||
|
||||
@@ -275,11 +275,20 @@ export function ChannelDialog({
|
||||
cardBrandRequest.current += 1
|
||||
setCardBrand((value as CardBrand | null) || "")
|
||||
}}
|
||||
itemToStringLabel={(brand: CardBrand) =>
|
||||
brand ? CARD_BRAND_LABELS[brand] || brand : ""
|
||||
}
|
||||
itemToStringValue={(brand: CardBrand) =>
|
||||
brand
|
||||
? `${brand} ${CARD_BRAND_LABELS[brand] || ""}`
|
||||
: ""
|
||||
}
|
||||
autoHighlight
|
||||
>
|
||||
<ComboboxInput
|
||||
id="cardBrand"
|
||||
placeholder="选择卡组织"
|
||||
className="w-full"
|
||||
disabled={isPending}
|
||||
/>
|
||||
<ComboboxContent>
|
||||
|
||||
@@ -118,6 +118,15 @@ function formatCardNumber(cardNumber: string) {
|
||||
.trim()
|
||||
}
|
||||
|
||||
function getCardSuffix(channel: ChannelWithAccountNames) {
|
||||
const digits = (
|
||||
channel.cardNumberSuffix ||
|
||||
channel.cardNumberFull ||
|
||||
""
|
||||
).replace(/\D/g, "")
|
||||
return digits.length >= 4 ? digits.slice(-4) : digits
|
||||
}
|
||||
|
||||
export function ChannelsView({
|
||||
initialChannels,
|
||||
initialAccounts,
|
||||
@@ -402,12 +411,7 @@ export function ChannelsView({
|
||||
{visibleCardIds.has(channel.id) &&
|
||||
channel.cardNumberFull
|
||||
? formatCardNumber(channel.cardNumberFull)
|
||||
: `•••• ${
|
||||
channel.cardNumberSuffix ||
|
||||
formatCardNumber(
|
||||
channel.cardNumberFull || ""
|
||||
).slice(-4)
|
||||
}`}
|
||||
: `•••• ${getCardSuffix(channel)}`}
|
||||
</span>
|
||||
{channel.cardNumberFull && (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user