taler-android

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

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:
Mwallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt | 44++++++++++++++++++++++++--------------------
Mwallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt | 1-
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