taler-android

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

commit daaf44c9eb10e8713694f980bde53aeaacfe938f
parent a2fc10059c3fd04397eb42075d8881fa7a54b4d4
Author: Iván Ávalos <avalos@disroot.org>
Date:   Fri, 12 Apr 2024 10:25:22 -0600

[wallet] Implement exchange reload

bug 0008298

Diffstat:
Mwallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt | 5+++++
Mwallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt | 4++++
Mwallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt | 16++++++++++++++++
Mwallet/src/main/res/menu/exchange.xml | 3+++
Mwallet/src/main/res/values/strings.xml | 1+
5 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt @@ -33,6 +33,7 @@ interface ExchangeClickListener { fun onExchangeSelected(item: ExchangeItem) fun onManualWithdraw(item: ExchangeItem) fun onPeerReceive(item: ExchangeItem) + fun onExchangeReload(item: ExchangeItem) fun onExchangeDelete(item: ExchangeItem) } @@ -99,6 +100,10 @@ internal class ExchangeAdapter( listener.onPeerReceive(item) true } + R.id.action_reload -> { + listener.onExchangeReload(item) + true + } R.id.action_delete -> { listener.onExchangeDelete(item) true diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt @@ -145,6 +145,10 @@ open class ExchangeListFragment : Fragment(), ExchangeClickListener { findNavController().navigate(R.id.action_global_receiveFunds) } + override fun onExchangeReload(item: ExchangeItem) { + exchangeManager.reload(item.exchangeBaseUrl) + } + override fun onExchangeDelete(item: ExchangeItem) { val optionsArray = arrayOf(getString(R.string.exchange_delete_force)) val checkedArray = BooleanArray(1) { false } diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt @@ -95,6 +95,22 @@ class ExchangeManager( } } + fun reload(exchangeUrl: String, force: Boolean = true) = scope.launch { + mProgress.value = true + api.request<Unit>("updateExchangeEntry") { + put("exchangeBaseUrl", exchangeUrl) + put("force", force) + }.onError { + Log.e(TAG, "Error reloading exchange: $it") + mProgress.value = false + mAddError.value = it.toEvent() + }.onSuccess { + mProgress.value = false + Log.d(TAG, "Exchange $exchangeUrl reloaded") + list() + } + } + fun delete(exchangeUrl: String, purge: Boolean = false) = scope.launch { mProgress.value = true api.request<Unit>("deleteExchange") { diff --git a/wallet/src/main/res/menu/exchange.xml b/wallet/src/main/res/menu/exchange.xml @@ -22,6 +22,9 @@ android:id="@+id/action_receive_peer" android:title="@string/receive_peer" /> <item + android:id="@+id/action_reload" + android:title="@string/exchange_reload" /> + <item android:id="@+id/action_delete" android:title="@string/transactions_delete" /> </menu> diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml @@ -244,6 +244,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="exchange_delete">Delete exchange</string> <string name="exchange_delete_force">Force deletion (purge)</string> <string name="exchange_dialog_delete_message">Are you sure you want to delete this exchange? Forcing this operation will result in a loss of funds.</string> + <string name="exchange_reload">Reload information</string> <string name="exchange_not_contacted">Exchange not contacted</string> <string name="exchange_add_url">Enter address of exchange</string> <string name="exchange_add_error">Could not add exchange</string>