From 416b30f7a83bf211ecb3e3a5a675f167ac6d7fb3 Mon Sep 17 00:00:00 2001 From: b13st Date: Wed, 1 Jul 2026 13:51:34 +0200 Subject: [PATCH 1/2] improving various visuals --- .../nacabaro/vbhelper/screens/BattlesScreen.kt | 10 +++++----- .../screens/scanScreen/ChooseConnectionScreen.kt | 2 +- .../scanScreen/screens/TransferAnimationScreen.kt | 2 +- .../settingsScreen/SettingsScreenControllerImpl.kt | 2 +- app/src/main/res/values-ja/strings.xml | 4 ++-- app/src/main/res/values-pt-rBR/strings.xml | 14 +++++++------- app/src/main/res/values/strings.xml | 12 ++++++------ 7 files changed, 23 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt index e9117d6..766ab8d 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt @@ -2124,8 +2124,8 @@ fun BattlesScreen() { // Create APIBattleCharacter from database character val playerCharacter = APIBattleCharacter( - name = "Player Digimon", // We could get this from the database if needed - namekey = "player_digimon", // Name key for the character + name = "Player Character", // We could get this from the database if needed + namekey = "player_digimon", // Name key for the character (functional lookup key, not shown) charaId = formattedCardId, // Use the formatted card ID for sprite loading stage = characterData.stage, attribute = characterData.attribute.ordinal, // Convert enum to int @@ -2232,10 +2232,10 @@ fun BattlesScreen() { ) { // Show active character info activeUserCharacter?.let { character -> - Text("Active Digimon:") + Text("Active character:") Text("Stage: ${character.stage}") activeCardId?.let { cardId -> - Text("Digimon ID: $cardId", fontSize = 14.sp, color = Color.Blue, fontWeight = FontWeight.Bold) + Text("Character ID: $cardId", fontSize = 14.sp, color = Color.Blue, fontWeight = FontWeight.Bold) } Spacer(modifier = Modifier.height(16.dp)) @@ -2336,7 +2336,7 @@ fun BattlesScreen() { textAlign = TextAlign.Center) } } else { - Text("Your Digimon must be at least Stage 2 to battle", + Text("Your character must be at least Stage 2 to battle", fontSize = 16.sp, color = Color.Red, textAlign = TextAlign.Center) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt index d5fe878..bff8d39 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt @@ -43,7 +43,7 @@ fun ChooseConnectOption( .padding(contentPadding) ) { Text( - text = "Bandai Toys = Vital Bracelet, Vital Hero, BE Bracelet", + text = "VB, VH, VBBE", fontSize = 14.sp, modifier = Modifier.padding(bottom = 24.dp) ) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/TransferAnimationScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/TransferAnimationScreen.kt index 137478b..8a68562 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/TransferAnimationScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/TransferAnimationScreen.kt @@ -104,7 +104,7 @@ fun TransferAnimationScreen( ) { Image( bitmap = preview.imageBitmap, - contentDescription = "Transferred Digimon sprite", + contentDescription = "Transferred character sprite", modifier = Modifier .size(preview.dpWidth, preview.dpHeight) .padding(8.dp), diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreenControllerImpl.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreenControllerImpl.kt index dd78c14..52b7460 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreenControllerImpl.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreenControllerImpl.kt @@ -136,7 +136,7 @@ class SettingsScreenControllerImpl( secrets = secretsImporter.importSecrets(it) } catch (e: Exception) { context.runOnUiThread { - Toast.makeText(context, "Secrets import failed. Please only select the official Vital Arena App 2.1.0 APK.", Toast.LENGTH_SHORT).show() + Toast.makeText(context, "Secrets import failed. Please only select the official app APK.", Toast.LENGTH_SHORT).show() } return@launch } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d0404cd..95bd892 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -24,7 +24,7 @@ DIMの転送に成功しました。 NFC機能を有効にして下さい。 設定 - Vital ArenaのAPKを読み込みして下さい。 + 公式アプリのAPKを読み込みして下さい。 転送が成功しました。 エラー このアプリについて @@ -64,7 +64,7 @@ DiM / BEm管理 データ管理 アプリのインポート - Vital Arena 2.1.0のAPKファイルを読み込みします。 + 公式アプリのAPKファイルを読み込みします。 カードのインポート 概要 / クレジット ジョグレス diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index a2f0b07..2caa2c4 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -43,13 +43,13 @@ Os segredos ainda não foram importados. Vá em Configurações e importe o APK. - Escanear um Vital Bracelet - Vital Bracelet para o app - App para o Vital Bracelet + Escanear um VB + VB para o app + App para o VB O dispositivo não possui NFC! - A tag detectada não é do Vital Bracelet. - " Segredos ausentes. Vá em Configurações e importe o APK do Vital Arena. " + A tag detectada não é do VB. + " Segredos ausentes. Vá em Configurações e importe o APK do app oficial. " Personagem enviado com sucesso! Ops! DIM enviado com sucesso! @@ -64,7 +64,7 @@ Importar APK - Importar segredos do APK do Vital Arena 2.1.0 + Importar segredos do APK do app oficial Importar card @@ -106,7 +106,7 @@ Responsável pelo design do ícone do aplicativo em SVG. - Aproxime o seu Vital Bracelet do leitor... + Aproxime o seu VB do leitor... Cancelar Ler personagem diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8db8873..e3a5d26 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -43,13 +43,13 @@ Secrets not yet imported. Go to Settings and Import APK. - Scan a Vital Bracelet + Scan a VB Watch to VBH VBH to Watch No NFC on device! Tag detected is not VB - " Missing Secrets. Go to settings and import Vital Arena APK. " + " Missing Secrets. Go to settings and import the official app APK. " Sent character successfully! Whoops Sent DIM successfully! @@ -65,7 +65,7 @@ Import APK - Import Secrets From Vital Arena APK + Import Secrets From the official app APK Import card @@ -109,7 +109,7 @@ Devout Debugger. - Place your Vital Bracelet near the reader... + Place your VB near the reader... Cancel Read character @@ -220,10 +220,10 @@ Remove Import Card Image - Connect Vital Bracelet + Connect VB Card imported successfully! No watch found! - Insert card into Vital Bracelet + Insert card into VB Validation successful! Select firmware file Firmware sent successfully! From 4eaf6cdf1b3314c5a37f4d9201593020263f0648 Mon Sep 17 00:00:00 2001 From: b13st Date: Wed, 1 Jul 2026 15:00:56 +0200 Subject: [PATCH 2/2] Fix double character deletion causing crash on HCE transfer to VitalWear Character was deleted from the local DB both right after sendCharacterToWatch and again in WritingScreen's completion callback. The second deletion failed because the character no longer existed, causing the reported random crash when sending back to the watch. Deletion is now handled only once, in WritingScreen. --- .../vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 32ca62e..73043bb 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,9 +231,7 @@ class ScanScreenControllerImpl( val proto = VitalWearCharacterExporter(componentActivity, database).buildCharacterProto(characterId) val client = VitalWearHceReaderClient(isoDep) client.sendCharacterToWatch(proto) - database.userCharacterDao().deleteCharacterById(characterId) - pendingExportCharacterId = null - Log.i("NFC_WRITE", "Character sent to VitalWear and deleted from app (id=$characterId)") + Log.i("NFC_WRITE", "Character sent to VitalWear (id=$characterId), deletion deferred to WritingScreen") componentActivity.runOnUiThread { Toast.makeText(componentActivity, componentActivity.getString(R.string.scan_sent_character_success), Toast.LENGTH_SHORT).show() }