From 0a80da6614dab2fbaea3b26cc87265fa76d17843 Mon Sep 17 00:00:00 2001 From: ppc Date: Mon, 13 Jan 2025 21:17:26 +0000 Subject: [PATCH] improve ux when scanning already imported physical card --- amnet-native/app/card/PhyscialCardScan.tsx | 24 ++++++++-------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/amnet-native/app/card/PhyscialCardScan.tsx b/amnet-native/app/card/PhyscialCardScan.tsx index 19d235b..67fadb8 100644 --- a/amnet-native/app/card/PhyscialCardScan.tsx +++ b/amnet-native/app/card/PhyscialCardScan.tsx @@ -26,25 +26,19 @@ export default function PhysicalCardScan() { return; } - const accessCode = cardInfo.type === ICType.Amusement ? cardInfo.accessCode : icCard0008Number(cardInfo.idm); - realm.write(() => { - let existingCard = realm.objects(AMCard.schema.name).find(x => x.code === accessCode); - const physicalCardInfo = realm.create(AMPhysicalCardData.schema.name, { + // check if the card has already been registered (convert a manually entered card to a physically scanned card) + const accessCode = cardInfo.type === ICType.Amusement ? cardInfo.accessCode : icCard0008Number(cardInfo.idm); + const cardEntity = realm.objects(AMCard.schema.name).find(x => x.code === accessCode) ?? realm.create(AMCard.schema.name, AMCard.generate(accessCode, cardName)); + + // set physical card props + cardEntity.name = cardName; + cardEntity.added = new Date(); + cardEntity.physicalCardData ??= realm.objectForPrimaryKey(AMPhysicalCardData.schema.name, cardInfo.idm) ?? realm.create(AMPhysicalCardData.schema.name, { cardIDm: cardInfo.idm, cardType: cardInfo.type, cardVendor: cardInfo.type === ICType.Amusement ? cardInfo.vendor : null }); - - if (!existingCard) { - existingCard = realm.create(AMCard.schema.name, AMCard.generate(accessCode, cardName)); - } else { - existingCard.name = cardName; - } - - // set physical card props - existingCard.added = new Date(); - existingCard.physicalCardData = physicalCardInfo; }); // dismiss the parent screen (this screen can only be accessed from modal -> stack) @@ -81,7 +75,7 @@ export default function PhysicalCardScan() { - + Ensure you have either an Amusement IC or Transport card ready to scan. After the scan has completed, the card will be saved to your device.