optimze mib cards loading

This commit is contained in:
2026-05-22 03:55:59 +05:00
parent 51dbed94d4
commit f208ee6ad1
6 changed files with 77 additions and 12 deletions
@@ -101,7 +101,9 @@ class CardSettingsFragment : Fragment() {
tvCardOwner.text = card.cardHolderName
tvCardNumber.text = PayWithCardFragment.formatMasked(card.maskedCardNumber)
tvCardType.text = card.cardTypeDesc
PayWithCardFragment.loadCardImage(ivCardImage, PayWithCardFragment.cardImageAsset(card))
val assetPath = PayWithCardFragment.cardImageAsset(card)
if (assetPath != null) PayWithCardFragment.loadCardImage(ivCardImage, assetPath)
else ivCardImage.setImageDrawable(null)
val wip = View.OnClickListener {
Toast.makeText(context, R.string.work_in_progress, Toast.LENGTH_SHORT).show()
}
@@ -64,6 +64,7 @@ import sh.sar.basedbank.api.mib.MibFinanceDeal
import sh.sar.basedbank.util.AccountCache
import sh.sar.basedbank.util.ContactsCache
import sh.sar.basedbank.util.CredentialStore
import sh.sar.basedbank.util.CardsCache
import sh.sar.basedbank.util.FinancingCache
import sh.sar.basedbank.util.ForeignLimitsCache
@@ -1011,6 +1012,7 @@ fun applyNavLabelVisibility() {
existing.removeAll { it.loginTag == "mib_$loginId" }
existing += cards
viewModel.mibCards.postValue(existing)
CardsCache.save(this@HomeActivity, existing)
}
} catch (_: Exception) { }
}
@@ -18,6 +18,7 @@ import androidx.recyclerview.widget.RecyclerView
import sh.sar.basedbank.R
import sh.sar.basedbank.api.mib.MibCard
import sh.sar.basedbank.databinding.FragmentPayWithCardBinding
import sh.sar.basedbank.util.CardsCache
class PayWithCardFragment : Fragment() {
@@ -57,10 +58,13 @@ class PayWithCardFragment : Fragment() {
binding.recyclerView.visibility = if (cards.isEmpty()) View.GONE else View.VISIBLE
}
if (viewModel.mibCards.value == null) {
val cached = CardsCache.load(requireContext())
if (cached.isNotEmpty()) {
viewModel.mibCards.value = cached
} else {
binding.loadingView.visibility = View.VISIBLE
(activity as? HomeActivity)?.triggerRefreshCards()
}
(activity as? HomeActivity)?.triggerRefreshCards()
}
override fun onResume() {
@@ -101,7 +105,9 @@ class PayWithCardFragment : Fragment() {
tvCardOwner.text = card.cardHolderName
tvCardNumber.text = formatMasked(card.maskedCardNumber)
tvCardType.text = card.cardTypeDesc
loadCardImage(ivCardImage, cardImageAsset(card))
val assetPath = cardImageAsset(card)
if (assetPath != null) loadCardImage(ivCardImage, assetPath)
else ivCardImage.setImageDrawable(null)
btnPayQr.setOnClickListener {
Toast.makeText(context, R.string.work_in_progress, Toast.LENGTH_SHORT).show()
}
@@ -113,13 +119,11 @@ class PayWithCardFragment : Fragment() {
}
companion object {
fun cardImageAsset(card: MibCard): String {
val desc = card.cardTypeDesc.lowercase()
return when {
"corporate" in desc || "business" in desc -> "cards/mib/visa_business.jpg"
"platinum" in desc -> "cards/mib/cards-platinum-bg-w-logo-1.jpg"
else -> "cards/mib/cards-blue-bg-w-logo-1.jpg"
}
fun cardImageAsset(card: MibCard): String? = when (card.cardType) {
"53" -> "cards/mib/visa_black_platinum.jpg"
"57" -> "cards/mib/visa_blue_everyday.jpg"
"70" -> "cards/mib/visa_business.jpg"
else -> null
}
fun loadCardImage(imageView: ImageView, assetPath: String) {
@@ -129,7 +133,7 @@ class PayWithCardFragment : Fragment() {
}
imageView.setImageBitmap(bitmap)
} catch (_: Exception) {
imageView.setImageResource(android.R.color.darker_gray)
imageView.setImageDrawable(null)
}
}