summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2023-03-06 15:49:21 -0300
committerTorsten Grote <t@grobox.de>2023-03-06 15:49:21 -0300
commitb226f4d3b56986f83898379d5d0fc6ef9a8971a0 (patch)
tree75df5175c0e74ce6d749498e3836330547525a9c
parent529478734944a60af428fa64e26001881afcf899 (diff)
downloadtaler-android-b226f4d3b56986f83898379d5d0fc6ef9a8971a0.tar.gz
taler-android-b226f4d3b56986f83898379d5d0fc6ef9a8971a0.tar.bz2
taler-android-b226f4d3b56986f83898379d5d0fc6ef9a8971a0.zip
[wallet] some fixes for previous commit
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt11
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt17
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt11
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt11
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt24
5 files changed, 32 insertions, 42 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt
index 4ca20fd..dd09b4c 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt
@@ -20,7 +20,6 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.platform.ComposeView
import net.taler.wallet.compose.TalerSurface
@@ -35,13 +34,9 @@ class TransactionDepositFragment : TransactionDetailFragment() {
): View = ComposeView(requireContext()).apply {
setContent {
TalerSurface {
- val t: Transaction? by transactionManager.selectedTransaction.observeAsState()
- if (t != null) {
- TransactionDepositComposable(t as TransactionDeposit) {
- onDeleteButtonClicked(t!!)
- }
- } else {
- error("No transaction")
+ val t = transactionManager.selectedTransaction.observeAsState().value
+ if (t is TransactionDeposit) TransactionDepositComposable(t) {
+ onDeleteButtonClicked(t)
}
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
index 8eac038..8be3fb5 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
@@ -43,7 +43,8 @@ class TransactionManager(
var selectedCurrency: String? = null
val searchQuery = MutableLiveData<String>(null)
- val selectedTransaction = MutableLiveData<Transaction?>(null)
+ private val mSelectedTransaction = MutableLiveData<Transaction?>(null)
+ val selectedTransaction: LiveData<Transaction?> = mSelectedTransaction
private val allTransactions = HashMap<String, List<Transaction>>()
private val mTransactions = HashMap<String, MutableLiveData<TransactionsResult>>()
val transactions: LiveData<TransactionsResult>
@@ -84,11 +85,12 @@ class TransactionManager(
mProgress.value = false
liveData.value = TransactionsResult.Success(transactions)
- // update selected transaction
- transactions.find {
- it.transactionId == selectedTransaction.value?.transactionId
+ // update selected transaction on UiThread (if it exists)
+ val selected = selectedTransaction.value
+ if (selected != null) transactions.find {
+ it.transactionId == selected.transactionId
}?.let {
- selectedTransaction.postValue(it)
+ mSelectedTransaction.value = it
}
// update all transactions on UiThread if there was a currency
@@ -99,6 +101,7 @@ class TransactionManager(
/**
* Returns true if given [transactionId] was found and selected, false otherwise.
*/
+ @UiThread
suspend fun selectTransaction(transactionId: String): Boolean {
var transaction: Transaction? = null
api.request("getTransactionById", Transaction.serializer()) {
@@ -109,7 +112,7 @@ class TransactionManager(
transaction = result
}
return if (transaction != null) {
- selectedTransaction.postValue(transaction)
+ mSelectedTransaction.value = transaction
true
} else {
false
@@ -117,7 +120,7 @@ class TransactionManager(
}
fun selectTransaction(transaction: Transaction) {
- selectedTransaction.postValue(transaction)
+ mSelectedTransaction.postValue(transaction)
}
fun deleteTransaction(transactionId: String) = scope.launch {
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
index 58e8f31..3d99774 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
@@ -28,7 +28,6 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment.Companion.CenterHorizontally
import androidx.compose.ui.Modifier
@@ -56,13 +55,9 @@ class TransactionPeerFragment : TransactionDetailFragment() {
): View = ComposeView(requireContext()).apply {
setContent {
TalerSurface {
- val t: Transaction? by transactionManager.selectedTransaction.observeAsState(null)
- if (t != null) {
- TransactionPeerComposable(t!!) {
- onDeleteButtonClicked(t!!)
- }
- } else {
- error("No transaction")
+ val t = transactionManager.selectedTransaction.observeAsState(null).value
+ if (t != null) TransactionPeerComposable(t) {
+ onDeleteButtonClicked(t)
}
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
index 1eb7fea..91af805 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
@@ -29,7 +29,6 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment.Companion.CenterHorizontally
import androidx.compose.ui.Modifier
@@ -53,13 +52,9 @@ class TransactionTipFragment : TransactionDetailFragment() {
): View = ComposeView(requireContext()).apply {
setContent {
TalerSurface {
- val t by transactionManager.selectedTransaction.observeAsState(null)
- if (t != null && t is TransactionTip) {
- TransactionTipComposable(t as TransactionTip) {
- onDeleteButtonClicked(t!!)
- }
- } else {
- error("No or wrong transaction")
+ val t = transactionManager.selectedTransaction.observeAsState(null).value
+ if (t is TransactionTip) TransactionTipComposable(t) {
+ onDeleteButtonClicked(t)
}
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
index 14b84b2..2778126 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
@@ -58,14 +58,14 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() {
ui.effectiveAmountLabel.text = getString(R.string.withdraw_total)
ui.effectiveAmountView.text = t.amountEffective.toString()
setupConfirmWithdrawalButton(t)
- setupActionButton(t)
- ui.chosenAmountLabel.text = getString(R.string.amount_chosen)
- ui.chosenAmountView.text =
- getString(R.string.amount_positive, t.amountRaw.toString())
- val fee = t.amountRaw - t.amountEffective
- ui.feeView.text = getString(R.string.amount_negative, fee.toString())
- ui.exchangeView.text = cleanExchange(t.exchangeBaseUrl)
- if (t.pending) {
+ setupActionButton(t)
+ ui.chosenAmountLabel.text = getString(R.string.amount_chosen)
+ ui.chosenAmountView.text =
+ getString(R.string.amount_positive, t.amountRaw.toString())
+ val fee = t.amountRaw - t.amountEffective
+ ui.feeView.text = getString(R.string.amount_negative, fee.toString())
+ ui.exchangeView.text = cleanExchange(t.exchangeBaseUrl)
+ if (t.pending) {
ui.deleteButton.setIconResource(R.drawable.ic_cancel)
ui.deleteButton.setText(R.string.cancel)
}
@@ -75,13 +75,15 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() {
}
}
+ private val isPending get() = transactionManager.selectedTransaction.value?.pending == true
+
override val deleteDialogTitle: Int
- get() = if (transactionManager.selectedTransaction.value?.pending == true) R.string.cancel else super.deleteDialogTitle
+ get() = if (isPending) R.string.cancel else super.deleteDialogTitle
override val deleteDialogMessage: Int
- get() = if (transactionManager.selectedTransaction.value?.pending == true) R.string.transactions_cancel_dialog_message
+ get() = if (isPending) R.string.transactions_cancel_dialog_message
else super.deleteDialogMessage
override val deleteDialogButton: Int
- get() = if (transactionManager.selectedTransaction.value?.pending == true) R.string.ok else super.deleteDialogButton
+ get() = if (isPending) R.string.ok else super.deleteDialogButton
private fun setupConfirmWithdrawalButton(t: TransactionWithdrawal) {
if (t.pending && !t.confirmed) {