summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/MainActivity.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2024-01-08 17:26:16 -0300
committerTorsten Grote <t@grobox.de>2024-01-08 17:51:53 -0300
commit0f32834dbbea6737793a7b55190ab58fdfa0bc3d (patch)
tree379499a3acb47ace2ad8d0d5588e6dce1ff34fdb /wallet/src/main/java/net/taler/wallet/MainActivity.kt
parent22029cd23b4e21df568a87dd9f759e7ccb3880fb (diff)
downloadtaler-android-0f32834dbbea6737793a7b55190ab58fdfa0bc3d.tar.gz
taler-android-0f32834dbbea6737793a7b55190ab58fdfa0bc3d.tar.bz2
taler-android-0f32834dbbea6737793a7b55190ab58fdfa0bc3d.zip
[wallet] support withdraw-exchange URI
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/MainActivity.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainActivity.kt32
1 files changed, 32 insertions, 0 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index 16f0efa..868ebe3 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -55,6 +55,7 @@ import com.journeyapps.barcodescanner.ScanOptions
import com.journeyapps.barcodescanner.ScanOptions.QR_CODE
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
import net.taler.common.EventObserver
import net.taler.common.isOnline
import net.taler.common.showError
@@ -283,6 +284,37 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener,
nav.navigate(R.id.action_global_promptWithdraw)
model.withdrawManager.getWithdrawalDetails(u2)
}
+
+ action.startsWith("withdraw-exchange/", ignoreCase = true) -> {
+ model.showProgressBar.value = true
+ lifecycleScope.launch(Dispatchers.IO) {
+ val response = model.withdrawManager.prepareManualWithdrawal(u2)
+ if (response == null) withContext(Dispatchers.Main) {
+ model.showProgressBar.value = false
+ nav.navigate(R.id.errorFragment)
+ } else {
+ val exchange =
+ model.exchangeManager.findExchangeByUrl(response.exchangeBaseUrl)
+ if (exchange == null) withContext(Dispatchers.Main) {
+ model.showProgressBar.value = false
+ showError(R.string.exchange_add_error)
+ } else {
+ model.exchangeManager.withdrawalExchange = exchange
+ withContext(Dispatchers.Main) {
+ model.showProgressBar.value = false
+ val args = Bundle().apply {
+ if (response.amount != null) {
+ putString("amount", response.amount.toJSONString())
+ }
+ }
+ // there's more than one entry point, so use global action
+ nav.navigate(R.id.action_global_manual_withdrawal, args)
+ }
+ }
+ }
+ }
+ }
+
action.startsWith("refund/", ignoreCase = true) -> {
model.showProgressBar.value = true
model.refundManager.refund(u2).observe(this, Observer(::onRefundResponse))