diff --git a/AGENTS.md b/AGENTS.md index 3bf01fb6c2..e5e1062020 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -351,6 +351,7 @@ suspend fun getData(): Result = withContext(Dispatchers.IO) { - ALWAYS add business logic to repository layer via methods returning `Result` and use it in ViewModels - ALWAYS order upstream architectural data flow this way: `UI -> ViewModel -> Repository -> RUST` and vice versa for downstream - ALWAYS add new localizable string resources in alphabetical order in `strings.xml` +- ALWAYS give rail-specific copy of a shared message its own key with the rail as suffix (`wallet__send_dialog2_usdt` next to `wallet__send_dialog2`) and leave the shared key unchanged - ALWAYS add or update the translation in every `values-*/strings.xml` in the same PR when adding or changing an English string; translations live in this repository, not in Transifex - NEVER add string resources for strings used only in dev settings screens and previews and never localize acronyms - ALWAYS use template in `.github/pull_request_template.md` for PR descriptions diff --git a/app/src/main/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModel.kt b/app/src/main/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModel.kt index 289ef46d6e..e11b4e185a 100644 --- a/app/src/main/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModel.kt +++ b/app/src/main/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModel.kt @@ -297,7 +297,7 @@ data class UsdtSendState( } private fun UsdtQuote.warnings(balance: ULong?, warnOver100: Boolean): List = buildList { - if (balance != null && amount > balance / 2u) add(SanityWarning.OVER_HALF_BALANCE) + if (balance != null && amount > balance / 2u) add(SanityWarning.OVER_HALF_USDT_BALANCE) if (warnOver100 && amount > 100_000_000u) add(SanityWarning.VALUE_OVER_100_USD) val totalCost = USat(maximumFee) + USat(USat(amount) - USat(receivedAmount)) if (totalCost > 10_000_000u) add(SanityWarning.FEE_OVER_10_USD) diff --git a/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt b/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt index 89c3f602d1..9d19e35581 100644 --- a/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt +++ b/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt @@ -8131,6 +8131,7 @@ data class OnchainFeeUi( enum class SanityWarning(@StringRes val message: Int, val testTag: String) { VALUE_OVER_100_USD(R.string.wallet__send_dialog1, "SendDialog1"), OVER_HALF_BALANCE(R.string.wallet__send_dialog2, "SendDialog2"), + OVER_HALF_USDT_BALANCE(R.string.wallet__send_dialog2_usdt, "SendDialog2"), FEE_OVER_HALF_VALUE(R.string.wallet__send_dialog3, "SendDialog3"), FEE_OVER_10_USD(R.string.wallet__send_dialog4, "SendDialog4"), // TODO SendDialog5 https://github.com/synonymdev/bitkit/blob/master/src/screens/Wallets/Send/ReviewAndSend.tsx#L457-L466 diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index a3729f4157..6d30699ed9 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -1016,6 +1016,7 @@ التفاصيل يبدو أنك ترسل أكثر من 100$. هل تريد المتابعة؟ يبدو أنك ترسل أكثر من 50% من إجمالي رصيدك. هل تريد المتابعة؟ + يبدو أنك ترسل أكثر من 50% من رصيدك من USDT. هل تريد المتابعة؟ تبدو رسوم المعاملة أكثر من 50% من المبلغ الذي ترسله. هل تريد المتابعة؟ تبدو رسوم المعاملة أكثر من 10$. هل تريد المتابعة؟ تعذر بث المعاملة. يرجى المحاولة مرة أخرى. diff --git a/app/src/main/res/values-b+es+419/strings.xml b/app/src/main/res/values-b+es+419/strings.xml index 0a7214189c..be92ca0479 100644 --- a/app/src/main/res/values-b+es+419/strings.xml +++ b/app/src/main/res/values-b+es+419/strings.xml @@ -1041,6 +1041,7 @@ Detalles Parece que está enviando más de 100 dólares. ¿Desea continuar? Parece que está enviando más del 50% de su saldo total. ¿Desea continuar? + Parece que está enviando más del 50% de su saldo de USDT. ¿Desea continuar? La comisión de transacción parece ser superior al 50% del importe que está enviando. ¿Desea continuar? La tasa de transacción parece ser superior a 10 dólares. ¿Desea continuar? No se ha podido emitir la transacción. Por favor, inténtelo de nuevo. diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 12877bfec5..d454c6b474 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -1034,6 +1034,7 @@ Detalls Sembla que estàs enviant més de 100 $. Vols continuar? Sembla que estàs enviant més del 50% del teu saldo total. Vols continuar? + Sembla que estàs enviant més del 50% del teu saldo de USDT. Vols continuar? La comissió de la transacció sembla ser més del 50% de l\'import que estàs enviant. Vols continuar? La comissió de la transacció sembla ser superior a 10 $. Vols continuar? No es pot transmetre la transacció. Si us plau, torna-ho a provar. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 057ac4e371..12163a1f2d 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1038,6 +1038,7 @@ Podrobnosti Zdá se, že posíláte více než $100. Přejete si pokračovat? Zdá se, že posíláte více než 50 % svého celkového zůstatku. Přejete si pokračovat? + Zdá se, že posíláte více než 50 % svého zůstatku USDT. Přejete si pokračovat? Zdá se, že transakční poplatek přesahuje 50 % částky, kterou odesíláte. Přejete si pokračovat? Transakční poplatek se zdá být vyšší než $10. Přejete si pokračovat? Transakci se nepodařilo provést. Zkuste to prosím znovu. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 76f55ebcce..6ba9bcbeff 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -905,6 +905,7 @@ Ja, senden Es scheint, dass du über $100 sendest. Möchtest du fortfahren? Es scheint, dass du über 50% deines Gesamtguthabens sendest. Möchtest du fortfahren? + Es scheint, dass du über 50% deines USDT-Guthabens sendest. Möchtest du fortfahren? Die Transaktionsgebühr scheint über 50% des gesendeten Betrags zu liegen. Möchtest du fortfahren? Die Transaktionsgebühr scheint über $10 zu liegen. Möchtest du fortfahren? Bitcoin gesendet diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 7716ce9422..e59576a82a 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -1022,6 +1022,7 @@ Λεπτομέρειες Φαίνεται ότι στέλνεις πάνω από $100. Θέλεις να συνεχίσεις; Φαίνεται ότι στέλνεις πάνω από 50% του συνολικού υπολοίπου σου. Θέλεις να συνεχίσεις; + Φαίνεται ότι στέλνεις πάνω από 50% του υπολοίπου σου σε USDT. Θέλεις να συνεχίσεις; Το τέλος συναλλαγής φαίνεται να είναι πάνω από 50% του ποσού που στέλνεις. Θέλεις να συνεχίσεις; Το τέλος συναλλαγής φαίνεται να είναι πάνω από $10. Θέλεις να συνεχίσεις; Δεν ήταν δυνατή η μετάδοση της συναλλαγής. Δοκίμασε ξανά. diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 625c9643ea..3c464fa803 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1036,6 +1036,7 @@ Detalles Parece que está enviando más de 100 dólares. ¿Desea continuar? Parece que está enviando más del 50% de su saldo total. ¿Desea continuar? + Parece que está enviando más del 50% de su saldo de USDT. ¿Desea continuar? La comisión de transacción parece ser superior al 50% del importe que está enviando. ¿Desea continuar? La comisión de transacción parece ser superior a 10 dólares. ¿Desea continuar? No se pudo emitir la transacción. Por favor, inténtalo de nuevo. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index d8e7343e9a..215c021b3c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -898,6 +898,7 @@ Sí, enviar Parece que está enviando más de 100 dólares. ¿Desea continuar? Parece que está enviando más del 50% de su saldo total. ¿Desea continuar? + Parece que está enviando más del 50% de su saldo de USDT. ¿Desea continuar? La comisión de transacción parece ser superior al 50% del importe que está enviando. ¿Desea continuar? La comisión de transacción parece ser superior a 10 dólares. ¿Desea continuar? Bitcoin Enviado diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index fb5734cbb9..3bff9a28e1 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -907,6 +907,7 @@ Oui, Envoyer Il apparaît que vous envoyez plus de 100 $. Voulez-vous continuer ? Il apparaît que vous envoyez plus de 50 % de votre solde total. Voulez-vous continuer ? + Il apparaît que vous envoyez plus de 50 % de votre solde USDT. Voulez-vous continuer ? Les frais de transaction semblent être supérieurs à 50 % du montant que vous envoyez. Voulez-vous continuer ? Les frais de transaction s\'élèvent à plus de 10 $. Voulez-vous continuer ? Envoi de bitcoins diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c3b3b545e1..0b99b9d7dd 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1037,6 +1037,7 @@ Dettagli Sembra che tu stia inviando più di $100. Vuoi continuare? Sembra che tu stia inviando più del 50% del suo saldo totale. Vuoi continuare? + Sembra che tu stia inviando più del 50% del tuo saldo USDT. Vuoi continuare? La commissione della transazione sembra essere superiore al 50% dell\'importo che stai inviando. Vuoi continuare? La commissione della transazione sembra essere superiore a $10. Vuoi continuare? Impossibile trasmettere la transazione. Per favore riprova. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 54dae1eec1..02d12a586d 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1032,6 +1032,7 @@ Details Het lijkt erop dat je meer dan $100 verstuurt. Wil je doorgaan? Het lijkt erop dat je meer dan 50% van je totale saldo verstuurt. Wil je doorgaan? + Het lijkt erop dat je meer dan 50% van je USDT-saldo verstuurt. Wil je doorgaan? De transactievergoeding lijkt meer dan 50% van het bedrag dat je verstuurt te zijn. Wil je doorgaan? De transactievergoeding lijkt meer dan $10 te zijn. Wil je doorgaan? Kan de transactie niet verzenden. Probeer het opnieuw. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 05f2d1755e..af79197cb0 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -909,6 +909,7 @@ Tak, wyślij Wygląda na to, że wysyłasz ponad $100. Czy kontynuować? Wygląda na to, że wysyłasz ponad 50% swojego salda. Czy kontynuować? + Wygląda na to, że wysyłasz ponad 50% swojego salda USDT. Czy kontynuować? Opłata transakcyjna wynosi ponad 50% wysyłanej kwoty. Czy chcesz kontynuować? Opłata transakcyjna wynosi ponad 10 USD. Czy chcesz kontynuować? Wysłane bitcoiny diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fddc8c369f..c67faa0a75 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1041,6 +1041,7 @@ Detalhes Parece que você está enviando mais de US$ 100. Deseja continuar? Parece que você está enviando mais de 50% do seu saldo total. Deseja continuar? + Parece que você está enviando mais de 50% do seu saldo de USDT. Deseja continuar? A taxa de transação parece ser superior a 50% do valor que você está enviando. Deseja continuar? A taxa de transação parece ser superior a US$ 10. Deseja continuar? Não foi possível transmitir a transação. Por favor, tente novamente. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 275913a53f..1d94fe96b1 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -778,6 +778,7 @@ Sim, Enviar Parece que você está enviando mais de US$ 100. Deseja continuar? Parece que você está enviando mais de 50% do seu saldo total. Deseja continuar? + Parece que você está enviando mais de 50% do seu saldo de USDT. Deseja continuar? A taxa de transação parece ser superior a 50% do valor que você está enviando. Deseja continuar? A taxa de transação parece ser superior a US$ 10. Deseja continuar? Bitcoin Enviado diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1eac79d7d3..b2c5b09f55 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1069,6 +1069,7 @@ Bitkit должен увеличить приёмную ёмкость ваше Подробности Похоже, вы отправляете более 100$. Вы хотите продолжать? Похоже, вы отправляете более 50% от общего баланса. Вы хотите продолжать? + Похоже, вы отправляете более 50% вашего баланса USDT. Вы хотите продолжать? Комиссия за транзакцию составляет более 50% от суммы, которую вы отправляете. Вы хотите продолжать? Комиссия за транзакцию составляет более 10$. Вы хотите продолжать? Не удалось отправить транзакцию. Пожалуйста, попробуйте снова. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d940bcf647..8187e20fbc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1538,6 +1538,7 @@ Details It appears you are sending over $100. Do you want to continue? It appears you are sending over 50% of your total balance. Do you want to continue? + It appears you are sending over 50% of your USDT balance. Do you want to continue? The transaction fee appears to be over 50% of the amount you are sending. Do you want to continue? The transaction fee appears to be over $10. Do you want to continue? Unable to broadcast the transaction. Please try again. diff --git a/app/src/test/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModelTest.kt b/app/src/test/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModelTest.kt index 466c703683..7ec719d00e 100644 --- a/app/src/test/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModelTest.kt +++ b/app/src/test/java/to/bitkit/ui/screens/wallets/usdt/UsdtViewModelTest.kt @@ -399,6 +399,15 @@ class UsdtViewModelTest : BaseUnitTest() { verify(repo, never()).send(any(), anyOrNull(), any()) } + @Test + fun `sending over half the balance shows the usdt balance warning`() = test { + val model = createViewModel(walletState = UsdtWalletState(balance = 1_500_000u)) + model.quote(quote.recipient, "1", quote.destination).join() + model.confirm().join() + assertEquals(SanityWarning.OVER_HALF_USDT_BALANCE, model.state.value.warning) + verify(repo, never()).send(any(), anyOrNull(), any()) + } + @Test fun `recorded payment that exceeds its deadline retains recovery with an expiry error`() = test { val retained: UsdtTransfer = mock { on { id }.thenReturn(quote.id) } diff --git a/changelog.d/next/1644.fixed.md b/changelog.d/next/1644.fixed.md new file mode 100644 index 0000000000..4e60004aae --- /dev/null +++ b/changelog.d/next/1644.fixed.md @@ -0,0 +1 @@ +USDT sends over half your USDT balance now warn about the USDT balance instead of the total balance. diff --git a/docs/usdt-qa.md b/docs/usdt-qa.md index 1354fe5f29..1e3ee4b8ce 100644 --- a/docs/usdt-qa.md +++ b/docs/usdt-qa.md @@ -95,6 +95,7 @@ Reference: [USDT designs](https://www.figma.com/design/ltqvnKiejWj0JQiqtDf2JJ/Bi - [ ] Open address details, verify Copy and QR target the same address, and return to the QR. - [ ] Back out of an unprepared network and verify the displayed network always matches the QR. Return to Arbitrum and verify its original wallet address. - [ ] With an authorized incoming transfer or an explicitly identified fixture, verify teal receive confetti, Details and OK; Details opens that transfer. +- [ ] With an authorized send or an explicitly identified fixture, send more than half the USDT balance: the warning reads "It appears you are sending over 50% of your USDT balance. Do you want to continue?", while a bitcoin send over half the total balance keeps the total balance copy. - [ ] With an authorized send or an explicitly identified fixture, check the swipe after warning and PIN prompts: loading and the completed checkmark stay at the right end, the swipe label is hidden, and confirmation keeps its side spacing until the success screen appears. - [ ] Verify bridge review, estimated fees and deposit history round displayed amounts to cents without changing the exact payment, QR or support-export values. Check a nonzero sub-cent value displays <0.01. - [ ] In delayed, failed, refunding, refunded and support-needed bridge details, verify Contact Support and Copy Details are small 40-point buttons in one row, matching Request refund / Hide details. Copy Details retains the full references; Contact Support opens the prefilled report without submitting it.