Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 37 additions & 1 deletion app/src/main/java/to/bitkit/data/SettingsStore.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.serialization.Serializable
import to.bitkit.data.serializers.SettingsSerializer
import to.bitkit.env.Env
import to.bitkit.ext.runSuspendCatching
import to.bitkit.models.BitcoinDisplayUnit
import to.bitkit.models.CoinSelectionPreference
import to.bitkit.models.DEFAULT_ADDRESS_TYPE_STRING
Expand Down Expand Up @@ -49,8 +50,9 @@ class SettingsStore @Inject constructor(
private set

suspend fun restoreFromBackup(payload: SettingsBackupV1) =
runCatching {
runSuspendCatching {
val data = payload.settings.resetPin()
.copy(ignoresSwitchUnitToast = false, ignoresHideBalanceToast = false)
.withDefaultPaykitPaymentMethods()
.withRequiredNativeSegwitMonitoring()
store.updateData { data }
Expand All @@ -67,6 +69,32 @@ class SettingsStore @Inject constructor(
store.updateData { transform(it).withRequiredNativeSegwitMonitoring() }
}

suspend fun switchBalanceUnit(): BalanceUnitSwitch? {
var firstSwitch: BalanceUnitSwitch? = null
store.updateData { settings ->
val nextDisplay = settings.primaryDisplay.not()
if (!settings.ignoresSwitchUnitToast) {
firstSwitch = BalanceUnitSwitch(settings.primaryDisplay, nextDisplay, settings.selectedCurrency)
}
settings.copy(primaryDisplay = nextDisplay, ignoresSwitchUnitToast = true)
}
return firstSwitch
}

suspend fun toggleHideBalanceFromSwipe(): Boolean {
var firstHide = false
store.updateData { settings ->
if (!settings.enableSwipeToHideBalance) return@updateData settings
val hideBalance = !settings.hideBalance
firstHide = hideBalance && !settings.ignoresHideBalanceToast
settings.copy(
hideBalance = hideBalance,
ignoresHideBalanceToast = settings.ignoresHideBalanceToast || firstHide,
)
}
return firstHide
}

suspend fun setIsPaykitEnabled(value: Boolean) {
localStore.edit { it[PAYKIT_ENABLED_KEY] = value }
}
Expand Down Expand Up @@ -150,6 +178,8 @@ data class SettingsData(
val enableSwipeToHideBalance: Boolean = true,
val hideBalance: Boolean = false,
val hideBalanceOnOpen: Boolean = false,
val ignoresSwitchUnitToast: Boolean = false,
val ignoresHideBalanceToast: Boolean = false,
val enableAutoReadClipboard: Boolean = false,
val enableSendAmountWarning: Boolean = false,
val backupVerified: Boolean = false,
Expand All @@ -170,6 +200,12 @@ data class SettingsData(
val pendingRestoreAddressTypePrune: Boolean = false,
)

data class BalanceUnitSwitch(
val previousDisplay: PrimaryDisplay,
val newDisplay: PrimaryDisplay,
val selectedCurrency: String,
)

fun SettingsData.resetPin() = this.copy(
isPinEnabled = false,
isPinForPaymentsEnabled = false,
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/to/bitkit/repositories/CurrencyRepo.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import to.bitkit.data.CacheStore
import to.bitkit.data.SettingsStore
import to.bitkit.di.BgDispatcher
import to.bitkit.env.Env
import to.bitkit.ext.runSuspendCatching
import to.bitkit.models.BTC_SCALE
import to.bitkit.models.BitcoinDisplayUnit
import to.bitkit.models.ConvertedAmount
Expand Down Expand Up @@ -163,6 +164,10 @@ class CurrencyRepo @Inject constructor(
settingsStore.update { it.copy(primaryDisplay = it.primaryDisplay.not()) }
}

suspend fun switchBalanceUnit() = withContext(bgDispatcher) {
runSuspendCatching { settingsStore.switchBalanceUnit() }
}

override suspend fun switchUnit(unit: PrimaryDisplay): PrimaryDisplay = withContext(bgDispatcher) {
unit.not().also { nextValue ->
setPrimaryDisplayUnit(nextValue)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ fun BalanceHeaderView(
showEyeIcon = showEyeIcon,
onClick = {},
onToggleHideBalance = {},
onRevealBalance = {},
testTag = testTag,
modifier = modifier,
)
Expand Down Expand Up @@ -110,8 +111,9 @@ fun BalanceHeaderView(
hideBalance = shouldHideBalance,
isSwipeToHideEnabled = allowSwipeToHide,
showEyeIcon = showEyeIcon,
onClick = onClick ?: { currency.switchUnit() },
onToggleHideBalance = { settings.setHideBalance(!hideBalance) },
onClick = onClick ?: { currency.switchBalanceUnit() },
onToggleHideBalance = { settings.toggleHideBalanceFromSwipe() },
onRevealBalance = { settings.setHideBalance(false) },
testTag = testTag,
modifier = modifier,
)
Expand All @@ -137,6 +139,7 @@ fun BalanceHeader(
isSwipeToHideEnabled: Boolean = false,
showEyeIcon: Boolean = false,
onToggleHideBalance: () -> Unit = {},
onRevealBalance: () -> Unit = {},
testTag: String? = null,
) {
val smallRowState = remember(
Expand Down Expand Up @@ -254,7 +257,7 @@ fun BalanceHeader(
tint = Colors.White64,
modifier = Modifier
.size(24.dp)
.clickableAlpha { onToggleHideBalance() }
.clickableAlpha { onRevealBalance() }
.testTag("ShowBalance")
)
}
Expand Down
34 changes: 34 additions & 0 deletions app/src/main/java/to/bitkit/viewmodels/CurrencyViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,26 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import to.bitkit.R
import to.bitkit.appwidget.ui.weather.WeatherGlanceWidget
import to.bitkit.models.BitcoinDisplayUnit
import to.bitkit.models.ConvertedAmount
import to.bitkit.models.PrimaryDisplay
import to.bitkit.models.Toast
import to.bitkit.repositories.CurrencyRepo
import to.bitkit.repositories.CurrencyState
import to.bitkit.ui.shared.toast.ToastEventBus
import to.bitkit.utils.Logger
import javax.inject.Inject

@HiltViewModel
class CurrencyViewModel @Inject constructor(
@ApplicationContext private val context: Context,
private val currencyRepo: CurrencyRepo,
) : ViewModel() {
private companion object {
const val TAG = "CurrencyViewModel"
}

val uiState: StateFlow<CurrencyState> = currencyRepo.currencyState

Expand All @@ -37,6 +44,33 @@ class CurrencyViewModel @Inject constructor(
}
}

fun switchBalanceUnit() {
viewModelScope.launch {
currencyRepo.switchBalanceUnit().onSuccess { switch ->
if (switch == null) return@onSuccess
val newUnit = if (switch.newDisplay == PrimaryDisplay.BITCOIN) {
context.getString(R.string.settings__general__unit_bitcoin)
} else {
switch.selectedCurrency
}
val previousUnit = if (switch.previousDisplay == PrimaryDisplay.BITCOIN) {
context.getString(R.string.settings__general__unit_bitcoin)
} else {
switch.selectedCurrency
}
ToastEventBus.send(
type = Toast.ToastType.INFO,
title = context.getString(R.string.wallet__balance_unit_switched_title, newUnit),
description = context.getString(R.string.wallet__balance_unit_switched_message, previousUnit),
visibilityTime = 5000L,
testTag = "BalanceUnitSwitchedToast",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs a companion bitkit-e2e-tests branch or the settings suite stays red.

The spec already waits for and dismisses both of these toasts — but only on iOS, because when these toasts shipped on iOS, Android didn't have them. Now Android emits the same test tags and the guards are stale.

bitkit-e2e-tests main (30d5f98), test/specs/settings.e2e.ts:

47: if (driver.isIOS) {
48:   await waitForToast('BalanceUnitSwitchedToast');
49: }
...
210: if (driver.isIOS) {
211:   await waitForToast('BalanceHiddenToast', { waitToDisappear: false, dismiss: true });
212: }

So on Android the toast is never dismissed, and the next step is openSettings() at :52 / :215, which is waitForDisplayed('HeaderMenu')sleep(500)sleep(200) → a single click(). ToastOverlay is a fillMaxSize Box at Alignment.TopCenter, mounted in MainActivity.kt:200 after the nav content, so its pointerInput node is the topmost sibling and shadows HeaderMenu in the top band. The click lands on the toast.

The 5s auto-hide does not rescue it, which is the part worth being explicit about: the toast does expire, but openSettings only clicks once and then waits 30s for DrawerSettings with no re-tap. So the drawer never opens and the wait times out. The failure screenshot shows exactly that — Home with $ 0.00 (the unit did switch), no toast, drawer closed.

Evidence it's this PR and not flake — run 34992953927, job 104463600597, all three attempts identical:

Error: element ("android=new UiSelector().resourceId("DrawerSettings")") still not displayed after 30000ms
    at async <anonymous> (.../test/specs/settings.e2e.ts:52:7)   # @settings_01
    at async <anonymous> (.../test/specs/settings.e2e.ts:215:7)  # @settings_06

Every other test in the suite that calls openSettings (03, 04, 05, 07, 09, 10, 11) passes, so the drawer is fine — only the two tests that trigger these toasts fail. The same job is green today on five other PR branches and on master.

That run is against e2f61e95. Head 0cae3c667 keeps showFirstHideToast = true on HomeScreen.kt:647 and doesn't touch switchBalanceUnit, so the in-flight run 34995922345 should fail the same way.

Fix: push a bitkit-e2e-tests branch named exactly codex/first-balance-gesture-toasts dropping the two if (driver.isIOS) wrappers — keep the waitForToast calls, they're already platform-agnostic and the tags now exist on both apps. determine-e2e-branch does git ls-remote --exit-code on the app branch name and falls back to main, so it'll pick that up automatically on the next run; merge it alongside this PR. I confirmed no such branch exists today.

Two things I'd avoid: gating the toasts on Env.isE2eTest (removes the only assertion that proves the feature works, and diverges e2e builds from what ships), and a blanket "dismiss any toast" in openSettings (broader than needed, and it would mask future overlay regressions).

Unrelated: the red lightning_security job is infra — failed to bind host port 0.0.0.0:39388 … address already in use during regtest setup, before any test ran.

)
}.onFailure {
Logger.error("Failed to switch balance unit", it, context = TAG)
}
}
}

fun setPrimaryDisplayUnit(unit: PrimaryDisplay) {
viewModelScope.launch {
currencyRepo.setPrimaryDisplayUnit(unit)
Expand Down
20 changes: 20 additions & 0 deletions app/src/main/java/to/bitkit/viewmodels/SettingsViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import to.bitkit.data.WidgetsStore
import to.bitkit.data.hasPaykitState
import to.bitkit.data.hasPublicPaykitPublicationState
import to.bitkit.data.paykitDisabled
import to.bitkit.ext.runSuspendCatching
import to.bitkit.flags.PaykitFeatureFlags
import to.bitkit.models.Toast
import to.bitkit.models.TransactionSpeed
Expand Down Expand Up @@ -384,6 +385,25 @@ class SettingsViewModel @Inject constructor(
}
}

fun toggleHideBalanceFromSwipe() {
viewModelScope.launch {
runSuspendCatching { settingsStore.toggleHideBalanceFromSwipe() }
.onSuccess { firstHide ->
if (!firstHide) return@onSuccess
ToastEventBus.send(
type = Toast.ToastType.INFO,
title = context.getString(R.string.wallet__balance_hidden_title),
description = context.getString(R.string.wallet__balance_hidden_message),
visibilityTime = 5000L,
testTag = "BalanceHiddenToast",
)
}
.onFailure {
Logger.error("Failed to hide balance from swipe", it, context = TAG)
}
}
}

val hideBalanceOnOpen = settingsStore.data.map { it.hideBalanceOnOpen }
.asStateFlow(initialValue = false)

Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-b+es+419/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">A ahorros</string>
<string name="wallet__activity_transfer_to_spending">A Gastos</string>
<string name="wallet__activity_tx_id">ID de la transacción</string>
<string name="wallet__balance_hidden_message">Desliza tu saldo para verlo nuevamente.</string>
<string name="wallet__balance_hidden_title">Saldo de billetera oculto</string>
<string name="wallet__balance_unit_switched_message">Toque el saldo de su monedero para cambiarlo de nuevo a %1$s.</string>
<string name="wallet__balance_unit_switched_title">Cambiado a %1$s</string>
<string name="wallet__boost">Impulsar</string>
<string name="wallet__boost_decrease_fee">Reducir comisión</string>
<string name="wallet__boost_error_msg">Bitkit no pudo impulsar la transacción.</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-ca/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">A estalvis</string>
<string name="wallet__activity_transfer_to_spending">A despesa</string>
<string name="wallet__activity_tx_id">ID de transacció</string>
<string name="wallet__balance_hidden_message">Llisca el saldo de la teva cartera per revelar-lo de nou.</string>
<string name="wallet__balance_hidden_title">Saldo de la cartera amagat</string>
<string name="wallet__balance_unit_switched_message">Toca el saldo de la teva cartera per tornar-lo a %1$s.</string>
<string name="wallet__balance_unit_switched_title">Canviat a %1$s</string>
<string name="wallet__boost">Impulsar</string>
<string name="wallet__boost_decrease_fee">Reduir tarifa</string>
<string name="wallet__boost_error_msg">Bitkit no ha pogut impulsar la transacció.</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-cs/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">Do úspor</string>
<string name="wallet__activity_transfer_to_spending">Do útrat</string>
<string name="wallet__activity_tx_id">ID transakce</string>
<string name="wallet__balance_hidden_message">Přejeďte prstem po zůstatku v peněžence a znovu jej odkryjte.</string>
<string name="wallet__balance_hidden_title">Skrytý zůstatek peněženky</string>
<string name="wallet__balance_unit_switched_message">Klepnutím na zůstatek v peněžence jej přepnete zpět na %1$s.</string>
<string name="wallet__balance_unit_switched_title">Přepnuto na %1$s</string>
<string name="wallet__boost">Posílit</string>
<string name="wallet__boost_decrease_fee">Snížit poplatek</string>
<string name="wallet__boost_error_msg">Bitkit se nepodařilo posílit transakci.</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -952,6 +952,10 @@
<string name="wallet__spending__title">AusgabenKonto</string>
<string name="wallet__spending__onboarding">&lt;accent&gt;Sende\nBitcoin&lt;/accent&gt;\nauf dein\nAusgabenkonto</string>
<string name="wallet__details_transfer_subtitle">Eingehender Transfer:</string>
<string name="wallet__balance_hidden_message">Streiche über dein Wallet-Guthaben, um es erneut anzuzeigen.</string>
<string name="wallet__balance_hidden_title">Wallet-Guthaben versteckt</string>
<string name="wallet__balance_unit_switched_message">Tippe auf dein Wallet-Guthaben, um es zurück zu %1$s zu wechseln.</string>
<string name="wallet__balance_unit_switched_title">Gewechselt zu %1$s</string>
<string name="wallet__boost">Beschleunigen</string>
<string name="wallet__boost_title">Transaktion beschleunigen</string>
<string name="wallet__boost_success_title">Beschleunigt!</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-el/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">Σε αποταμιεύσεις</string>
<string name="wallet__activity_transfer_to_spending">Σε δαπάνες</string>
<string name="wallet__activity_tx_id">ID συναλλαγής</string>
<string name="wallet__balance_hidden_message">Σύρετε το υπόλοιπο του πορτοφολιού σας για να το αποκαλύψετε ξανά.</string>
<string name="wallet__balance_hidden_title">Υπόλοιπο Πορτοφολιού Κρυμμένο</string>
<string name="wallet__balance_unit_switched_message">Πατήστε στο υπόλοιπο του πορτοφολιού σας για να το αλλάξετε πίσω σε %1$s.</string>
<string name="wallet__balance_unit_switched_title">Αλλαγή σε %1$s</string>
<string name="wallet__boost">Ενίσχυση</string>
<string name="wallet__boost_decrease_fee">Μείωση τέλους</string>
<string name="wallet__boost_error_msg">Το Bitkit δεν μπόρεσε να ενισχύσει τη συναλλαγή.</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-es-rES/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">A ahorros</string>
<string name="wallet__activity_transfer_to_spending">A gasto</string>
<string name="wallet__activity_tx_id">ID de la transacción</string>
<string name="wallet__balance_hidden_message">Deslice el balance del monedero para mostrarlo de nuevo.</string>
<string name="wallet__balance_hidden_title">Saldo del Monedero Oculto</string>
<string name="wallet__balance_unit_switched_message">Toca tu saldo del monedero para cambiarlo de nuevo a %1$s.</string>
<string name="wallet__balance_unit_switched_title">Cambió a %1$s</string>
<string name="wallet__boost">Impulso</string>
<string name="wallet__boost_decrease_fee">Reducir comisión</string>
<string name="wallet__boost_error_msg">Bitkit no pudo potenciar la transacción.</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -946,6 +946,10 @@
<string name="wallet__savings__onboarding">&lt;accent&gt;Envía\nbitcoin&lt;/accent&gt;\na tu\nsaldo de ahorros</string>
<string name="wallet__spending__title">Gasto</string>
<string name="wallet__spending__onboarding">&lt;accent&gt;Envía\nbitcoin&lt;/accent&gt;\na tu\nsaldo de gastos</string>
<string name="wallet__balance_hidden_message">Deslice el balance del monedero para mostrarlo de nuevo.</string>
<string name="wallet__balance_hidden_title">Saldo del Monedero Oculto</string>
<string name="wallet__balance_unit_switched_message">Toca tu saldo del monedero para cambiarlo de nuevo a %1$s.</string>
<string name="wallet__balance_unit_switched_title">Cambió a %1$s</string>
<string name="wallet__boost">Impulso</string>
<string name="wallet__boost_title">Potenciar Transacción</string>
<string name="wallet__boost_success_title">Impulsada!</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -942,6 +942,10 @@
<string name="wallet__spending__title">Dépenses</string>
<string name="wallet__spending__onboarding">&lt;accent&gt;Envoyer \nles bitcoins&lt;/accent&gt;\nsur votre \nsolde Dépenses</string>
<string name="wallet__details_transfer_subtitle">Transfert entrant : </string>
<string name="wallet__balance_hidden_message">Faites glisser votre solde pour l’afficher à nouveau.</string>
<string name="wallet__balance_hidden_title">Balance du wallet cachée</string>
<string name="wallet__balance_unit_switched_message">Appuyez sur votre solde pour le repasser en %1$s.</string>
<string name="wallet__balance_unit_switched_title">Passé en %1$s</string>
<string name="wallet__boost">Boost</string>
<string name="wallet__boost_title">Boost Transaction</string>
<string name="wallet__boost_success_title">Boostée !</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">Ai Risparmi</string>
<string name="wallet__activity_transfer_to_spending">A Saldo Spendibile</string>
<string name="wallet__activity_tx_id">ID Transazione</string>
<string name="wallet__balance_hidden_message">Scorri il saldo del tuo portafoglio per rivelarlo di nuovo.</string>
<string name="wallet__balance_hidden_title">Saldo del portafoglio nascosto</string>
<string name="wallet__balance_unit_switched_message">Tocca il saldo del tuo portafoglio per ripristinarlo %1$s.</string>
<string name="wallet__balance_unit_switched_title">Passato a %1$s</string>
<string name="wallet__boost">Potenzia</string>
<string name="wallet__boost_decrease_fee">Riduci commissione</string>
<string name="wallet__boost_error_msg">Bitkit non è stato in grado di potenziare la transazione.</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">Naar spaargeld</string>
<string name="wallet__activity_transfer_to_spending">Naar bestedingssaldo</string>
<string name="wallet__activity_tx_id">Transactie-ID</string>
<string name="wallet__balance_hidden_message">Veeg uw saldo om deze weer te onthullen.</string>
<string name="wallet__balance_hidden_title">Saldo Wallet Verborgen</string>
<string name="wallet__balance_unit_switched_message">Tik op uw saldo om het terug te zetten naar %1$s.</string>
<string name="wallet__balance_unit_switched_title">Overgeschakeld naar %1$s</string>
<string name="wallet__boost">Boost</string>
<string name="wallet__boost_decrease_fee">Vergoeding verlagen</string>
<string name="wallet__boost_error_msg">Bitkit kon de transactie niet boosten.</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-pl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -942,6 +942,10 @@
<string name="wallet__spending__title">Wydatki</string>
<string name="wallet__spending__onboarding">&lt;accent&gt;Wyślij\nbitcoin&lt;/accent&gt;\nna Twoje\nsaldo wydatków</string>
<string name="wallet__details_transfer_subtitle">Transfer przychodzący: </string>
<string name="wallet__balance_hidden_message">Przeciągnij saldo portfela, aby je ponownie wyświetlić.</string>
<string name="wallet__balance_hidden_title">Ukryte saldo portfela</string>
<string name="wallet__balance_unit_switched_message">Dotknij salda portfela, aby przełączyć je z powrotem na %1$s.</string>
<string name="wallet__balance_unit_switched_title">Przełączono na %1$s</string>
<string name="wallet__boost">Przyśpiesz</string>
<string name="wallet__boost_title">Przyśpiesz transakcję</string>
<string name="wallet__boost_success_title">Przyśpieszona!</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-pt-rBR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,10 @@
<string name="wallet__activity_transfer_to_savings">Para Poupança</string>
<string name="wallet__activity_transfer_to_spending">Para o Saldo de Gastos</string>
<string name="wallet__activity_tx_id">ID da transação</string>
<string name="wallet__balance_hidden_message">Deslize o seu saldo para revelá-lo novamente.</string>
<string name="wallet__balance_hidden_title">Saldo da Carteira Oculto</string>
<string name="wallet__balance_unit_switched_message">Toque no seu saldo para visualizá-lo em %1$s.</string>
<string name="wallet__balance_unit_switched_title">Saldo exibido em %1$s</string>
<string name="wallet__boost">Impulsionar</string>
<string name="wallet__boost_decrease_fee">Reduzir taxa</string>
<string name="wallet__boost_error_msg">A Bitkit não conseguiu acelerar a transação.</string>
Expand Down
Loading
Loading