From 07315fe11b73957d65e5ad1a45881ae6b0bb0478 Mon Sep 17 00:00:00 2001 From: b13st Date: Wed, 24 Jun 2026 15:29:58 +0200 Subject: [PATCH] Delete character from app after successful HCE transfer to VitalWear watch When sending a character to the VitalWear watch via HCE, the transfer is atomic (single NFC interaction). The character was being left in the app after transfer, allowing it to be cloned indefinitely. Delete the character from the database immediately after sendCharacterToWatch succeeds, matching the behavior of physical bracelet transfers which delete the character once both write phases complete. --- .../vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt index de4d476..32ca62e 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt @@ -231,7 +231,9 @@ class ScanScreenControllerImpl( val proto = VitalWearCharacterExporter(componentActivity, database).buildCharacterProto(characterId) val client = VitalWearHceReaderClient(isoDep) client.sendCharacterToWatch(proto) - Log.i("NFC_WRITE", "Character sent to VitalWear via HCE") + database.userCharacterDao().deleteCharacterById(characterId) + pendingExportCharacterId = null + Log.i("NFC_WRITE", "Character sent to VitalWear and deleted from app (id=$characterId)") componentActivity.runOnUiThread { Toast.makeText(componentActivity, componentActivity.getString(R.string.scan_sent_character_success), Toast.LENGTH_SHORT).show() }