TP-71218 | Loans Tab Status Bar Issue Fix (#11490)

Co-authored-by: Aman S <aman.s@navi.com>
This commit is contained in:
Anupam Kumar
2024-06-21 14:50:05 +05:30
committed by GitHub
parent 12e35a4fb7
commit 856ef3012f
3 changed files with 46 additions and 8 deletions

View File

@@ -8,6 +8,7 @@
package com.naviapp.home.dashboard.ui.compose.loansTab
import android.app.Activity
import androidx.core.content.ContextCompat
import com.navi.base.deeplink.DeepLinkManager
import com.navi.base.model.CtaData
import com.navi.base.model.CtaType
@@ -18,6 +19,9 @@ import com.navi.common.utils.isDynamicModuleInstalled
import com.navi.common.utils.setStatusBarColorInt
import com.navi.design.utils.parseColorSafe
import com.navi.rr.utils.NaviRRAnalytics.Companion.currency
import com.naviapp.R
import com.naviapp.forge.model.ScreenDefinition
import com.naviapp.home.compose.activity.HomePageActivity
import com.naviapp.home.compose.model.InitiatePaymentFromComposeData
import com.naviapp.home.dashboard.viewmodels.LoanTabVm
import com.naviapp.home.model.HpBottomSheetContent
@@ -63,8 +67,14 @@ class LoansTabHelper {
}
}
fun toggleStatusBarColor(startColor: String, activity: Activity) {
activity.setStatusBarColorInt(startColor.parseColorSafe())
fun toggleStatusBarColor(activity: HomePageActivity, loanTabVm: LoanTabVm) {
loanTabVm.loansTabUiTronData.value.let {
if (it is LoanTabVm.LoansTabUiTronScreenState.Success) {
activity.setStatusBarColorInt(getStatusBarColor(it.data))
} else {
activity.setStatusBarColorInt(ContextCompat.getColor(activity, R.color.white))
}
}
}
private fun handlePaymentActionData(actionData: CtaData, sharedVM: SharedVM) {
@@ -103,4 +113,18 @@ class LoansTabHelper {
homeLoanAppInstalled = isDynamicModuleInstalled(HL_DYNAMIC_MODULE_NAME)
)
}
private fun getStatusBarColor(data: ScreenDefinition): Int =
data.screenStructure
?.header
?.widgetData
?.parentComposeView
?.get(0)
?.property
?.backGroundBrushData
?.colorStops
?.get(0)
?.second
.toString()
.parseColorSafe()
}

View File

@@ -12,11 +12,19 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import com.naviapp.home.compose.activity.HomePageActivity
import com.naviapp.home.dashboard.viewmodels.LoanTabVm
import com.naviapp.home.model.HpBottomSheetState
import com.naviapp.home.viewmodel.SharedVM
import com.naviapp.utils.Constants.LOANS_TAB_SCREEN
@Composable
fun LoansTabLifeCycleListener(loansTabVm: LoanTabVm, loansTabHelper: LoansTabHelper) {
fun LoansTabLifeCycleListener(
loansTabVm: LoanTabVm,
loansTabHelper: LoansTabHelper,
activity: HomePageActivity,
sharedVM: SharedVM
) {
val lifecycleOwner = LocalLifecycleOwner.current
val lifecycle = lifecycleOwner.lifecycle
@@ -24,7 +32,11 @@ fun LoansTabLifeCycleListener(loansTabVm: LoanTabVm, loansTabHelper: LoansTabHel
val observer = LifecycleEventObserver { _, event ->
when (event) {
Lifecycle.Event.ON_RESUME -> {
if (loansTabVm.getLoansTabInitStatus().not()) {
loansTabHelper.toggleStatusBarColor(activity, loansTabVm)
if (
loansTabVm.getLoansTabInitStatus().not() &&
sharedVM.bottomSheetStateHolder.value.state == HpBottomSheetState.Hidden
) {
sendInitEvent(LOANS_TAB_SCREEN)
loansTabVm.setLoansTabInitStatus(true)
loansTabHelper.fetchLoansTab(loansTabVm)

View File

@@ -7,7 +7,6 @@
package com.naviapp.home.dashboard.ui.compose.loansTab
import android.app.Activity
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@@ -27,7 +26,7 @@ import com.naviapp.home.viewmodel.SharedVM
fun LoansTabScreen(activity: HomePageActivity, sharedVM: SharedVM, modifier: Modifier = Modifier) {
val loansTabVm by lazy { ViewModelProvider(activity)[LoanTabVm::class.java] }
val loansTabHelper by lazy { LoansTabHelper() }
LoansTabLifeCycleListener(loansTabVm, loansTabHelper)
LoansTabLifeCycleListener(loansTabVm, loansTabHelper, activity, sharedVM)
InitObserver(
viewModel = loansTabVm,
activity = activity,
@@ -40,7 +39,7 @@ fun LoansTabScreen(activity: HomePageActivity, sharedVM: SharedVM, modifier: Mod
@Composable
private fun InitObserver(
viewModel: LoanTabVm,
activity: Activity,
activity: HomePageActivity,
sharedVM: SharedVM,
modifier: Modifier = Modifier,
loansTabHelper: LoansTabHelper
@@ -49,12 +48,15 @@ private fun InitObserver(
Box(modifier = modifier) {
when (val shimmerState = viewModel.loansTabUiTronData.collectAsStateWithLifecycle().value) {
is LoanTabVm.LoansTabUiTronScreenState.Loading -> {
loansTabHelper.toggleStatusBarColor(activity, viewModel)
LoansTabContentShimmer()
}
is LoanTabVm.LoansTabUiTronScreenState.Success -> {
LoansTab(
loansTabVm = viewModel,
toggleStatusBarColor = { loansTabHelper.toggleStatusBarColor(it, activity) }
toggleStatusBarColor = {
loansTabHelper.toggleStatusBarColor(activity, viewModel)
}
)
}
is LoanTabVm.LoansTabUiTronScreenState.Error -> {