import {Text} from "react-native"; import {ReactNode, useMemo} from "react"; import {CreditCard, History, Joystick, RailSymbol} from "lucide-react-native"; import TimeAgo from "./TimeAgo"; import {AMUICard, AMUICardActionProps, AMUICardDetail} from "./AMUICard"; import {AMCardData, AMPhysicalCardData} from "../models/AMCard"; import {AmusementICVendor, ICType} from "../lib/iccard"; export interface ICCardProps extends AMUICardActionProps { card: AMCardData, children?: ReactNode, showFullCardNumber?: boolean } export function ICCard(props: ICCardProps) { const displayedCardNumber = useMemo(() => props.showFullCardNumber ? props.card.code.match(/.{1,4}/g)?.join(" ") : `•••• ${props.card.code.substring(props.card.code.length - 4)}`, [props.showFullCardNumber, props.card.code]); return ( {displayedCardNumber} {props.card.lastUsed && ( )} {props.children} ); } function PhysicalICInfo(props: { physicalCard: AMPhysicalCardData | null }) { if (props.physicalCard?.cardType === ICType.Transport) { return ( Transport IC Card ) } if (props.physicalCard?.cardVendor) { return ( {ICVendorName(props.physicalCard.cardVendor)} ); } return null; } function ICVendorName(vendor: AmusementICVendor): string { switch (vendor) { case AmusementICVendor.Sega: return "AiMe Card"; case AmusementICVendor.Konami: return "e-Amusement Pass"; case AmusementICVendor.BandaiNamcoGames: case AmusementICVendor.BandaiNamcoEntertainment: return "Banapass"; case AmusementICVendor.Nesica: return "NESiCA Card"; default: return "Amusement IC Card"; } }