diff options
Diffstat (limited to 'wallet/src/main/java')
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 + } + } |