From eb7da01b2ec99920111766a752664368f327a4fd Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Fri, 22 May 2026 06:42:43 +0500 Subject: [PATCH] auto and lazy load cards to dashbaord --- .../java/sh/sar/basedbank/ui/home/DashboardFragment.kt | 7 ------- .../main/java/sh/sar/basedbank/ui/home/HomeActivity.kt | 9 +++++++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt index 1988b57..a5a72b9 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt @@ -21,7 +21,6 @@ import sh.sar.basedbank.api.bml.BmlForeignLimit import sh.sar.basedbank.api.models.BankAccount import sh.sar.basedbank.api.mib.MibCard import sh.sar.basedbank.api.mib.MibFinanceDeal -import sh.sar.basedbank.util.CardsCache import kotlin.math.abs import sh.sar.basedbank.databinding.FragmentDashboardBinding import sh.sar.basedbank.databinding.ItemForeignLimitBinding @@ -58,12 +57,6 @@ class DashboardFragment : Fragment() { binding.rvCards.adapter = cardAdapter LinearSnapHelper().attachToRecyclerView(binding.rvCards) - val cached = CardsCache.load(requireContext()) - if (cached.isNotEmpty()) { - cardAdapter.update(cached) - binding.sectionCards.visibility = View.VISIBLE - } - viewModel.mibCards.observe(viewLifecycleOwner) { cards -> if (cards.isNullOrEmpty()) return@observe cardAdapter.update(cards) diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt index f59414b..76cdd42 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt @@ -178,6 +178,8 @@ class HomeActivity : AppCompatActivity() { byLoginId.forEach { (loginId, accs) -> AccountCache.saveFahipay(this, loginId, accs) } } + val cachedCards = CardsCache.load(this) + if (cachedCards.isNotEmpty()) viewModel.mibCards.value = cachedCards val cachedFinancing = FinancingCache.load(this) if (cachedFinancing.isNotEmpty()) viewModel.financing.value = cachedFinancing val cachedBmlLoans = FinancingCache.loadBmlLoans(this) @@ -191,6 +193,7 @@ class HomeActivity : AppCompatActivity() { } for ((_, session) in app.bmlSessions) refreshBmlLimits(session) refreshBmlLoanDetails() + triggerRefreshCards() } else { // Came from lock screen — show caches immediately, refresh everything in background val store = CredentialStore(this) @@ -199,6 +202,8 @@ class HomeActivity : AppCompatActivity() { val cachedFahipay = AccountCache.loadFahipay(this, store.getFahipayLoginIds()) val merged = cachedMib + cachedBml + cachedFahipay if (merged.isNotEmpty()) viewModel.accounts.value = merged + val cachedCards = CardsCache.load(this) + if (cachedCards.isNotEmpty()) viewModel.mibCards.value = cachedCards val cachedFinancing = FinancingCache.load(this) if (cachedFinancing.isNotEmpty()) viewModel.financing.value = cachedFinancing val cachedBmlLoans = FinancingCache.loadBmlLoans(this) @@ -709,6 +714,10 @@ fun applyNavLabelVisibility() { refreshFinancing(loginId, session, profiles.filterVisibleProfiles(loginId)) } refreshBmlLoanDetails() + for ((loginId, session) in app.mibSessions) { + val profiles = app.mibProfilesMap[loginId] ?: emptyList() + refreshMibCards(loginId, session, profiles) + } } }