taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit 0c97d7f493560f70797759d3ebd414374124b8d8
parent 645476d0b850a48616cca07b724b57e9a3909175
Author: Iván Ávalos <avalos@disroot.org>
Date:   Mon, 19 Oct 2026 14:47:17 +0200

[wallet] disable "treat as global" for exchanges without master pub key

Diffstat:
Mwallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt | 6++++--
Mwallet/src/main/java/net/taler/wallet/exchanges/ExchangeListScreen.kt | 12++++++++----
2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt b/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt @@ -131,13 +131,14 @@ class BalanceManager( fun addGlobalCurrencyExchange( currency: String, exchange: ExchangeItem, + exchangeMasterPub: String, onSuccess: () -> Unit, onError: (error: TalerErrorInfo) -> Unit, ) = scope.launch { api.request<Unit>("addGlobalCurrencyExchange") { put("currency", currency) put("exchangeBaseUrl", exchange.exchangeBaseUrl) - put("exchangeMasterPub", exchange.masterPub) + put("exchangeMasterPub", exchangeMasterPub) }.onError { error -> Log.e(TAG, "got addGlobalCurrencyExchange error: $error") onError(error) @@ -149,13 +150,14 @@ class BalanceManager( fun removeGlobalCurrencyExchange( currency: String, exchange: ExchangeItem, + exchangeMasterPub: String, onSuccess: () -> Unit, onError: (error: TalerErrorInfo) -> Unit, ) = scope.launch { api.request<Unit>("removeGlobalCurrencyExchange") { put("currency", currency) put("exchangeBaseUrl", exchange.exchangeBaseUrl) - put("exchangeMasterPub", exchange.masterPub) + put("exchangeMasterPub", exchangeMasterPub) }.onError { error -> Log.e(TAG, "got removeGlobalCurrencyExchange error: $error") onError(error) diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListScreen.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListScreen.kt @@ -232,12 +232,14 @@ fun ExchangeDropDownMenu( if (exchange.scopeInfo is ScopeInfo.Exchange) { DropdownMenuItem( text = { Text(stringResource(R.string.exchange_global_add)) }, - onClick = { onAction(ExchangeAction.GlobalAdd) } + onClick = { onAction(ExchangeAction.GlobalAdd) }, + enabled = exchange.masterPub != null, ) } else if (exchange.scopeInfo is ScopeInfo.Global) { DropdownMenuItem( text = { Text(stringResource(R.string.exchange_global_delete)) }, - onClick = { onAction(ExchangeAction.GlobalDelete) } + onClick = { onAction(ExchangeAction.GlobalDelete) }, + enabled = exchange.masterPub != null, ) } } @@ -353,18 +355,20 @@ fun handleExchangeAction( } } } - ExchangeAction.GlobalAdd -> { + ExchangeAction.GlobalAdd -> if (exchange.masterPub != null) { balanceManager.addGlobalCurrencyExchange( currency = exchange.currency ?: return, exchange = exchange, + exchangeMasterPub = exchange.masterPub, onSuccess = {}, onError = {} ) } - ExchangeAction.GlobalDelete -> { + ExchangeAction.GlobalDelete -> if (exchange.masterPub != null) { balanceManager.removeGlobalCurrencyExchange( currency = exchange.currency ?: return, exchange = exchange, + exchangeMasterPub = exchange.masterPub, onSuccess = {}, onError = {} )