summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/exchanges
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/exchanges')
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt5
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt11
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt19
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/Exchanges.kt6
4 files changed, 41 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
index cb294ac..674632e 100644
--- 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
index 5482b5a..8a40bff 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt
@@ -110,6 +110,13 @@ open class ExchangeListFragment : Fragment(), ExchangeClickListener {
showError(error.userFacingMsg)
}
})
+ exchangeManager.reloadError.observe(viewLifecycleOwner, EventObserver { error ->
+ if (model.devMode.value == true) {
+ showError(error)
+ } else {
+ showError(error.userFacingMsg)
+ }
+ })
}
protected open fun onExchangeUpdate(exchanges: List<ExchangeItem>) {
@@ -145,6 +152,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
index eb01cab..fa357b5 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
@@ -62,6 +62,9 @@ class ExchangeManager(
private val mDeleteError = MutableLiveData<Event<TalerErrorInfo>>()
val deleteError: LiveData<Event<TalerErrorInfo>> = mDeleteError
+ private val mReloadError = MutableLiveData<Event<TalerErrorInfo>>()
+ val reloadError: LiveData<Event<TalerErrorInfo>> = mReloadError
+
var withdrawalExchange: ExchangeItem? = null
private fun list(): LiveData<List<ExchangeItem>> {
@@ -95,6 +98,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
+ mReloadError.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/java/net/taler/wallet/exchanges/Exchanges.kt b/wallet/src/main/java/net/taler/wallet/exchanges/Exchanges.kt
index ce0bd82..0015e1c 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/Exchanges.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/Exchanges.kt
@@ -21,6 +21,12 @@ import net.taler.wallet.balances.ScopeInfo
import net.taler.wallet.cleanExchange
@Serializable
+data class BuiltinExchange(
+ val exchangeBaseUrl: String,
+ val currencyHint: String? = null,
+)
+
+@Serializable
data class ExchangeItem(
val exchangeBaseUrl: String,
// can be null before exchange info in wallet-core was fully loaded