accounts list: use available balance, show blocked amount as secondary line
BML CASA rows on the accounts list were showing currentBalance (the working/ledger balance, which includes blocked funds). Every other balance display in the app — transfer screen, contact picker, QR pay, dashboard totals — uses availableBalance, so the same account was showing a different figure depending on where you looked at it. This switches the accounts list to availableBalance for consistency, and adds a small muted "MVR X.XX blocked" line beneath the balance when blocked > 0 so the blocked funds are still visible at a glance. Only BML reports a non-zero blocked amount; MIB and Fahipay rows are unaffected. The per-account history page header is untouched — its three-column Available / Balance / Blocked breakdown still works as before. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -125,6 +125,14 @@ class AccountsAdapter(
|
||||
binding.tvAccountNumber.text = display.number
|
||||
binding.tvAccountType.text = display.typeLabel
|
||||
binding.tvBalance.text = if (hideAmounts) maskAmount(display.balance) else display.balance
|
||||
val blocked = display.blockedBalance
|
||||
if (blocked != null) {
|
||||
val shown = if (hideAmounts) maskAmount(blocked) else blocked
|
||||
binding.tvBlocked.text = binding.root.context.getString(R.string.account_blocked_label, shown)
|
||||
binding.tvBlocked.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.tvBlocked.visibility = View.GONE
|
||||
}
|
||||
binding.btnTransfer.setOnClickListener { onTransferClick?.invoke(account) }
|
||||
binding.root.setOnClickListener { onAccountClick(account) }
|
||||
binding.root.setOnLongClickListener {
|
||||
|
||||
@@ -5,6 +5,7 @@ data class AccountListDisplay(
|
||||
val number: String,
|
||||
val typeLabel: String,
|
||||
val balance: String,
|
||||
val blockedBalance: String? = null, // null when zero or not applicable
|
||||
val isCard: Boolean = false,
|
||||
val cardBrandIcon: Int = 0, // drawable res, only meaningful if isCard
|
||||
val statusLabel: String? = null // null = active; shown as status pill if set
|
||||
|
||||
@@ -26,11 +26,13 @@ object BmlDashboardParser {
|
||||
statusLabel = if (isActive) null else account.statusDesc
|
||||
)
|
||||
} else {
|
||||
val blocked = account.blockedAmount.toDoubleOrNull() ?: 0.0
|
||||
AccountListDisplay(
|
||||
name = account.accountBriefName,
|
||||
number = account.accountNumber,
|
||||
typeLabel = productLabel(account.accountTypeName),
|
||||
balance = listBalance(account)
|
||||
name = account.accountBriefName,
|
||||
number = account.accountNumber,
|
||||
typeLabel = productLabel(account.accountTypeName),
|
||||
balance = listBalance(account),
|
||||
blockedBalance = if (blocked > 0.0) "${account.currencyName} ${account.blockedAmount}" else null
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -52,9 +54,9 @@ object BmlDashboardParser {
|
||||
}
|
||||
}
|
||||
|
||||
/** Balance shown in the accounts list — ledger (working) balance for BML CASA. */
|
||||
/** Balance shown in the accounts list — available balance, consistent with transfer/contact picker. */
|
||||
fun listBalance(account: BankAccount): String =
|
||||
"${account.currencyName} ${account.currentBalance}"
|
||||
"${account.currencyName} ${account.availableBalance}"
|
||||
|
||||
fun cardBrandIcon(productName: String): Int = when {
|
||||
productName.contains("AMEX", ignoreCase = true) ||
|
||||
|
||||
Reference in New Issue
Block a user