From 62ccae602d54fb4292648c18c878d7fe4b64223c Mon Sep 17 00:00:00 2001 From: ahusan Date: Thu, 28 May 2026 14:54:33 +0500 Subject: [PATCH] accounts list: use available balance, show blocked amount as secondary line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .../sh/sar/basedbank/ui/home/AccountsAdapter.kt | 8 ++++++++ .../sh/sar/basedbank/util/AccountListDisplay.kt | 1 + .../basedbank/util/bmlapi/BmlDashboardParser.kt | 14 ++++++++------ app/src/main/res/layout/item_account.xml | 9 +++++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/AccountsAdapter.kt b/app/src/main/java/sh/sar/basedbank/ui/home/AccountsAdapter.kt index 3919621..c9df329 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/AccountsAdapter.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/AccountsAdapter.kt @@ -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 { diff --git a/app/src/main/java/sh/sar/basedbank/util/AccountListDisplay.kt b/app/src/main/java/sh/sar/basedbank/util/AccountListDisplay.kt index 647d04b..060a814 100644 --- a/app/src/main/java/sh/sar/basedbank/util/AccountListDisplay.kt +++ b/app/src/main/java/sh/sar/basedbank/util/AccountListDisplay.kt @@ -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 diff --git a/app/src/main/java/sh/sar/basedbank/util/bmlapi/BmlDashboardParser.kt b/app/src/main/java/sh/sar/basedbank/util/bmlapi/BmlDashboardParser.kt index a6e747b..47c2f31 100644 --- a/app/src/main/java/sh/sar/basedbank/util/bmlapi/BmlDashboardParser.kt +++ b/app/src/main/java/sh/sar/basedbank/util/bmlapi/BmlDashboardParser.kt @@ -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) || diff --git a/app/src/main/res/layout/item_account.xml b/app/src/main/res/layout/item_account.xml index 99cdbc8..6a5a514 100644 --- a/app/src/main/res/layout/item_account.xml +++ b/app/src/main/res/layout/item_account.xml @@ -72,6 +72,15 @@ android:textAppearance="?attr/textAppearanceTitleSmall" android:textColor="?attr/colorOnSurface" /> + + Accounts Cards Available Balance + %1$s blocked Quick Transfer