summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-05-15 13:28:45 -0300
committerTorsten Grote <t@grobox.de>2020-05-15 14:26:44 -0300
commitebaffcdfabd2d33e1754321f0c08d7ca5bd1570a (patch)
tree9ca8a16f4244d85ec6e6e0970debd96bf3782b01 /wallet/src/main/java/net/taler/wallet
parent49b9fb9306addd4dc5540dfd08f0ced6d56050ec (diff)
downloadtaler-android-ebaffcdfabd2d33e1754321f0c08d7ca5bd1570a.tar.gz
taler-android-ebaffcdfabd2d33e1754321f0c08d7ca5bd1570a.tar.bz2
taler-android-ebaffcdfabd2d33e1754321f0c08d7ca5bd1570a.zip
[wallet] show a pending badge next to balances with pending transactions
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet')
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainFragment.kt1
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainViewModel.kt6
-rw-r--r--wallet/src/main/java/net/taler/wallet/balances/BalanceAdapter.kt10
-rw-r--r--wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt1
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt8
5 files changed, 19 insertions, 7 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/MainFragment.kt b/wallet/src/main/java/net/taler/wallet/MainFragment.kt
index 328d7a2..26c5a90 100644
--- a/wallet/src/main/java/net/taler/wallet/MainFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainFragment.kt
@@ -28,6 +28,7 @@ import kotlinx.android.synthetic.main.fragment_main.*
import net.taler.common.EventObserver
import net.taler.wallet.CurrencyMode.MULTI
import net.taler.wallet.CurrencyMode.SINGLE
+import net.taler.wallet.balances.BalanceItem
import net.taler.wallet.balances.BalancesFragment
import net.taler.wallet.transactions.TransactionsFragment
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index 6a1d6aa..75cab67 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -32,6 +32,7 @@ import net.taler.common.Event
import net.taler.common.assertUiThread
import net.taler.common.toEvent
import net.taler.wallet.backend.WalletBackendApi
+import net.taler.wallet.balances.BalanceItem
import net.taler.wallet.history.DevHistoryManager
import net.taler.wallet.payment.PaymentManager
import net.taler.wallet.pending.PendingOperationsManager
@@ -48,8 +49,6 @@ private val transactionNotifications = listOf(
"withdraw-group-finished"
)
-data class BalanceItem(val available: Amount, val pendingIncoming: Amount)
-
class MainViewModel(val app: Application) : AndroidViewModel(app) {
private val mBalances = MutableLiveData<Map<String, BalanceItem>>()
@@ -127,7 +126,8 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) {
val jsonAmountIncoming = byCurrency.getJSONObject(currency)
.getJSONObject("pendingIncoming")
val amountIncoming = Amount.fromJsonObject(jsonAmountIncoming)
- balanceMap[currency] = BalanceItem(amount, amountIncoming)
+ val hasPending = transactionManager.hasPending(currency)
+ balanceMap[currency] = BalanceItem(amount, amountIncoming, hasPending)
}
mBalances.postValue(balanceMap)
showProgressBar.postValue(false)
diff --git a/wallet/src/main/java/net/taler/wallet/balances/BalanceAdapter.kt b/wallet/src/main/java/net/taler/wallet/balances/BalanceAdapter.kt
index 0ccfeb2..be50364 100644
--- a/wallet/src/main/java/net/taler/wallet/balances/BalanceAdapter.kt
+++ b/wallet/src/main/java/net/taler/wallet/balances/BalanceAdapter.kt
@@ -24,10 +24,12 @@ import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.Adapter
-import net.taler.wallet.BalanceItem
+import net.taler.common.Amount
import net.taler.wallet.R
import net.taler.wallet.balances.BalanceAdapter.BalanceViewHolder
+data class BalanceItem(val available: Amount, val pendingIncoming: Amount, val hasPending: Boolean)
+
class BalanceAdapter(private val listener: BalanceClickListener) : Adapter<BalanceViewHolder>() {
private var items = emptyList<BalanceItem>()
@@ -55,10 +57,11 @@ class BalanceAdapter(private val listener: BalanceClickListener) : Adapter<Balan
}
inner class BalanceViewHolder(private val v: View) : RecyclerView.ViewHolder(v) {
- private val currencyView: TextView = v.findViewById(R.id.balance_currency)
- private val amountView: TextView = v.findViewById(R.id.balance_amount)
+ private val currencyView: TextView = v.findViewById(R.id.balanceCurrencyView)
+ private val amountView: TextView = v.findViewById(R.id.balanceAmountView)
private val balanceInboundAmount: TextView = v.findViewById(R.id.balanceInboundAmount)
private val balanceInboundLabel: TextView = v.findViewById(R.id.balanceInboundLabel)
+ private val pendingView: TextView = v.findViewById(R.id.pendingView)
fun bind(item: BalanceItem) {
v.setOnClickListener { listener.onBalanceClick(item.available.currency) }
@@ -75,6 +78,7 @@ class BalanceAdapter(private val listener: BalanceClickListener) : Adapter<Balan
balanceInboundAmount.text =
v.context.getString(R.string.amount_positive, amountIncoming)
}
+ pendingView.visibility = if (item.hasPending) VISIBLE else GONE
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt b/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt
index ab4077a..22dd992 100644
--- a/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt
@@ -31,7 +31,6 @@ import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager.VERTICAL
import kotlinx.android.synthetic.main.fragment_balances.*
import net.taler.common.fadeIn
-import net.taler.wallet.BalanceItem
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
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 f830aa1..5b8e577 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
@@ -89,4 +89,12 @@ class TransactionManager(
liveData.postValue(TransactionsResult.Success(transactions))
}
+ @UiThread
+ fun hasPending(currency: String): Boolean {
+ val result = mTransactions[currency]?.value ?: return false
+ return if (result is TransactionsResult.Success) {
+ result.transactions.any { it.pending }
+ } else false
+ }
+
}