From e9aae97e558c0f57479d5f827a0fc6b802bfee81 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 13 Oct 2020 09:42:22 -0300 Subject: [wallet] expose error message when withdrawing TESTKUDOS fails --- wallet/src/main/java/net/taler/wallet/MainViewModel.kt | 2 +- .../java/net/taler/wallet/settings/SettingsFragment.kt | 10 +++++++++- .../main/java/net/taler/wallet/withdraw/WithdrawManager.kt | 14 ++++++++++---- 3 files changed, 20 insertions(+), 6 deletions(-) (limited to 'wallet/src/main/java') diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt index 9e49f54..7bb6ad9 100644 --- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt +++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt @@ -132,7 +132,7 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) { @UiThread fun dangerouslyReset() { api.sendRequest("reset") - withdrawManager.testWithdrawalInProgress.value = false + withdrawManager.testWithdrawalStatus.value = null mBalances.value = emptyList() } diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt index d2f30aa..bd6ce1a 100644 --- a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt @@ -25,6 +25,7 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreferenceCompat import com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_SHORT import com.google.android.material.snackbar.Snackbar +import net.taler.common.showError import net.taler.common.showLogViewer import net.taler.common.toRelativeTime import net.taler.wallet.BuildConfig.FLAVOR @@ -33,6 +34,7 @@ import net.taler.wallet.BuildConfig.VERSION_NAME import net.taler.wallet.BuildConfig.WALLET_CORE_VERSION import net.taler.wallet.MainViewModel import net.taler.wallet.R +import net.taler.wallet.withdraw.WithdrawTestStatus class SettingsFragment : PreferenceFragmentCompat() { @@ -98,9 +100,15 @@ class SettingsFragment : PreferenceFragmentCompat() { true } - withdrawManager.testWithdrawalInProgress.observe(viewLifecycleOwner, { loading -> + withdrawManager.testWithdrawalStatus.observe(viewLifecycleOwner, { status -> + if (status == null) return@observe + val loading = status is WithdrawTestStatus.Withdrawing prefWithdrawTest.isEnabled = !loading model.showProgressBar.value = loading + if (status is WithdrawTestStatus.Error) { + requireActivity().showError(R.string.withdraw_error_test, status.message) + } + withdrawManager.testWithdrawalStatus.value = null }) prefWithdrawTest.setOnPreferenceClickListener { withdrawManager.withdrawTestkudos() diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt index 5e11c04..5afb125 100644 --- a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt +++ b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt @@ -59,6 +59,12 @@ sealed class WithdrawStatus { data class Error(val message: String?) : WithdrawStatus() } +sealed class WithdrawTestStatus { + object Withdrawing : WithdrawTestStatus() + object Success : WithdrawTestStatus() + data class Error(val message: String) : WithdrawTestStatus() +} + @Serializable data class WithdrawalDetailsForUri( val amount: Amount, @@ -84,7 +90,7 @@ class WithdrawManager( ) { val withdrawStatus = MutableLiveData() - val testWithdrawalInProgress = MutableLiveData(false) + val testWithdrawalStatus = MutableLiveData() private val _exchangeSelection = MutableLiveData>() val exchangeSelection: LiveData> = _exchangeSelection @@ -92,11 +98,11 @@ class WithdrawManager( private set fun withdrawTestkudos() = scope.launch { - testWithdrawalInProgress.value = true + testWithdrawalStatus.value = WithdrawTestStatus.Withdrawing api.request("withdrawTestkudos").onError { - testWithdrawalInProgress.postValue(false) + testWithdrawalStatus.value = WithdrawTestStatus.Error(it.userFacingMsg) }.onSuccess { - testWithdrawalInProgress.postValue(false) + testWithdrawalStatus.value = WithdrawTestStatus.Success } } -- cgit v1.2.3