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:
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 = {}
)