fix caching reading issue when refreshed without internet

This commit is contained in:
2026-05-23 21:49:27 +05:00
parent 219ca9bf00
commit ee9f98b720
6 changed files with 14 additions and 10 deletions
@@ -181,7 +181,7 @@ class BmlAccountClient {
bank = "BML", bank = "BML",
profileName = profileName, profileName = profileName,
profileType = cardProfileType, profileType = cardProfileType,
cifType = productCode, productCode = productCode,
accountNumber = accountNumber, accountNumber = accountNumber,
accountBriefName = item.optString("alias").ifBlank { product }, accountBriefName = item.optString("alias").ifBlank { product },
currencyName = currency, currencyName = currency,
@@ -161,7 +161,7 @@ class MibLoginFlow(private val credentialStore: CredentialStore) {
bank = "MIB", bank = "MIB",
profileName = profile.name, profileName = profile.name,
profileType = profile.profileType, profileType = profile.profileType,
cifType = profile.cifType, productCode = profile.cifType,
accountNumber = a.optString("accountNumber"), accountNumber = a.optString("accountNumber"),
accountBriefName = a.optString("accountBriefName"), accountBriefName = a.optString("accountBriefName"),
currencyName = a.optString("currencyName"), currencyName = a.optString("currencyName"),
@@ -318,7 +318,7 @@ class MibLoginFlow(private val credentialStore: CredentialStore) {
bank = "MIB", bank = "MIB",
profileName = profile.name, profileName = profile.name,
profileType = profile.profileType, profileType = profile.profileType,
cifType = profile.cifType, productCode = profile.cifType,
accountNumber = a.optString("accountNumber"), accountNumber = a.optString("accountNumber"),
accountBriefName = a.optString("accountBriefName"), accountBriefName = a.optString("accountBriefName"),
currencyName = a.optString("currencyName"), currencyName = a.optString("currencyName"),
@@ -8,7 +8,7 @@ data class BankAccount(
val bank: String, // "MIB", "BML", "FAHIPAY" — set by the login flow val bank: String, // "MIB", "BML", "FAHIPAY" — set by the login flow
val profileName: String, val profileName: String,
val profileType: String, val profileType: String,
val cifType: String = "", // MIB: human-readable profile category (e.g. "Individual", "Sole Propr"); empty for other banks val productCode: String = "", // bank-specific product/subtype code: MIB: CIF type label ("Individual", "Sole Propr"); BML: card product code ("C8201", "C1007")
val accountNumber: String, val accountNumber: String,
val accountBriefName: String, val accountBriefName: String,
val currencyName: String, val currencyName: String,
@@ -72,7 +72,7 @@ class AccountsAdapter(
else -> account.bank else -> account.bank
} }
val profileLabel = when (account.bank) { val profileLabel = when (account.bank) {
"MIB" -> account.cifType.ifBlank { account.profileName } "MIB" -> account.productCode.ifBlank { account.profileName }
else -> account.profileName else -> account.profileName
} }
return if (profileLabel.isNotBlank()) "$profileLabel · $bankName" else bankName return if (profileLabel.isNotBlank()) "$profileLabel · $bankName" else bankName
@@ -19,7 +19,7 @@ object AccountCache {
put("bank", acc.bank) put("bank", acc.bank)
put("profileName", acc.profileName) put("profileName", acc.profileName)
put("profileType", acc.profileType) put("profileType", acc.profileType)
put("cifType", acc.cifType) put("productCode", acc.productCode)
put("accountNumber", acc.accountNumber) put("accountNumber", acc.accountNumber)
put("accountBriefName", acc.accountBriefName) put("accountBriefName", acc.accountBriefName)
put("currencyName", acc.currencyName) put("currencyName", acc.currencyName)
@@ -44,6 +44,7 @@ object AccountCache {
arr.put(JSONObject().apply { arr.put(JSONObject().apply {
put("profileName", acc.profileName) put("profileName", acc.profileName)
put("profileType", acc.profileType) put("profileType", acc.profileType)
put("productCode", acc.productCode)
put("accountNumber", acc.accountNumber) put("accountNumber", acc.accountNumber)
put("accountBriefName", acc.accountBriefName) put("accountBriefName", acc.accountBriefName)
put("currencyName", acc.currencyName) put("currencyName", acc.currencyName)
@@ -55,6 +56,7 @@ object AccountCache {
put("statusDesc", acc.statusDesc) put("statusDesc", acc.statusDesc)
put("loginTag", acc.loginTag) put("loginTag", acc.loginTag)
put("internalId", acc.internalId) put("internalId", acc.internalId)
put("profileId", acc.profileId)
}) })
} }
context.getSharedPreferences(PREFS, Context.MODE_PRIVATE) context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
@@ -72,6 +74,7 @@ object AccountCache {
bank = "BML", bank = "BML",
profileName = o.optString("profileName"), profileName = o.optString("profileName"),
profileType = o.optString("profileType"), profileType = o.optString("profileType"),
productCode = o.optString("productCode", ""),
accountNumber = o.optString("accountNumber"), accountNumber = o.optString("accountNumber"),
accountBriefName = o.optString("accountBriefName"), accountBriefName = o.optString("accountBriefName"),
currencyName = o.optString("currencyName"), currencyName = o.optString("currencyName"),
@@ -83,7 +86,8 @@ object AccountCache {
statusDesc = o.optString("statusDesc"), statusDesc = o.optString("statusDesc"),
profileImageHash = null, profileImageHash = null,
loginTag = o.optString("loginTag"), loginTag = o.optString("loginTag"),
internalId = o.optString("internalId", "") internalId = o.optString("internalId", ""),
profileId = o.optString("profileId", "")
) )
} }
} catch (_: Exception) { emptyList() } } catch (_: Exception) { emptyList() }
@@ -162,7 +166,7 @@ object AccountCache {
bank = o.optString("bank", "MIB"), bank = o.optString("bank", "MIB"),
profileName = o.optString("profileName"), profileName = o.optString("profileName"),
profileType = o.optString("profileType"), profileType = o.optString("profileType"),
cifType = o.optString("cifType", ""), productCode = o.optString("productCode", ""),
accountNumber = o.optString("accountNumber"), accountNumber = o.optString("accountNumber"),
accountBriefName = o.optString("accountBriefName"), accountBriefName = o.optString("accountBriefName"),
currencyName = o.optString("currencyName"), currencyName = o.optString("currencyName"),
@@ -6,10 +6,10 @@ object BmlCardParser {
/** /**
* Returns the asset path for the card image. * Returns the asset path for the card image.
* The product code is stored in [BankAccount.cifType] for BML Card accounts. * The product code is stored in [BankAccount.productCode] for BML Card accounts.
*/ */
fun cardImageAsset(account: BankAccount): String = fun cardImageAsset(account: BankAccount): String =
productCodeToAsset(account.cifType) productCodeToAsset(account.productCode)
fun productCodeToAsset(productCode: String): String = when (productCode) { fun productCodeToAsset(productCode: String): String = when (productCode) {
"C8201" -> "cards/bml/master_prepaid.png" "C8201" -> "cards/bml/master_prepaid.png"