commit 9d3174d8469d3d57838c2faa5f2bc3bbc6462b05
parent 26a9121fc7bb75fd3c730cf60b2cde5380843105
Author: Iván Ávalos <avalos@disroot.org>
Date: Thu, 7 Nov 2024 15:08:07 +0100
[wallet] Fix withdrawal via URI when wallet is empty
Diffstat:
2 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt
@@ -103,7 +103,25 @@ class PromptWithdrawFragment: Fragment() {
?: status.currency
?: transactionManager.selectedScope.value?.currency
?: currencies.firstOrNull()
- ?: error("no default currency specified")
+
+ LaunchedEffect(status.status) {
+ if (status.status == None) {
+ if (withdrawUri != null) {
+ // get withdrawal details for taler://withdraw URI
+ withdrawManager.getWithdrawalDetails(withdrawUri, loading = true)
+ } else if (withdrawExchangeUri != null) {
+ // get withdrawal details for taler://withdraw-exchange URI
+ withdrawManager.prepareManualWithdrawal(withdrawExchangeUri)
+ } else if (defaultCurrency != null) {
+ // get withdrawal details for available data
+ withdrawManager.getWithdrawalDetails(
+ amount = amount ?: Amount.zero(defaultCurrency),
+ exchangeBaseUrl = exchangeBaseUrl,
+ loading = true,
+ )
+ }
+ }
+ }
val currencySpec = remember(exchange?.scopeInfo) {
exchange?.scopeInfo?.let { scopeInfo ->
@@ -120,6 +138,11 @@ class PromptWithdrawFragment: Fragment() {
return@let
}
+ if (defaultCurrency == null) {
+ LoadingScreen()
+ return@let
+ }
+
when (s.status) {
Loading -> LoadingScreen()
@@ -155,25 +178,6 @@ class PromptWithdrawFragment: Fragment() {
}
}
}
-
- LaunchedEffect(status.status) {
- if (status.status == None) {
- if (withdrawUri != null) {
- // get withdrawal details for taler://withdraw URI
- withdrawManager.getWithdrawalDetails(withdrawUri, loading = true)
- } else if (withdrawExchangeUri != null) {
- // get withdrawal details for taler://withdraw-exchange URI
- withdrawManager.prepareManualWithdrawal(withdrawExchangeUri)
- } else {
- // get withdrawal details for available data
- withdrawManager.getWithdrawalDetails(
- amount = amount ?: Amount.zero(defaultCurrency),
- exchangeBaseUrl = exchangeBaseUrl,
- loading = true,
- )
- }
- }
- }
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
@@ -19,7 +19,6 @@ package net.taler.wallet.withdraw
import android.net.Uri
import android.util.Log
import androidx.annotation.UiThread
-import androidx.annotation.WorkerThread
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow