TP-71020 | Loans Tab Flicker Issue Fix (#11464)

This commit is contained in:
Anupam Kumar
2024-06-20 12:32:22 +05:30
committed by GitHub
parent cc882cb821
commit cd8630b952
4 changed files with 68 additions and 32 deletions

View File

@@ -88,7 +88,11 @@ fun NavGraphNavigationItem(
LoansTabScreen(
activity = activity,
sharedVM = sharedVM,
modifier = Modifier.fillMaxSize().padding(bottom = 56.dp).statusBarsPadding()
modifier =
Modifier.fillMaxSize()
.padding(bottom = 56.dp)
.statusBarsPadding()
.background(Color.White)
)
NavigationItem.Insurance.tabId -> {
FragmentContainer(

View File

@@ -28,16 +28,12 @@ import com.naviapp.forge.model.WidgetModelDefinition
import com.naviapp.home.dashboard.viewmodels.LoanTabVm
@Composable
fun LoansTab(
loansTabVm: LoanTabVm,
toggleStatusBarColor: (String) -> Unit,
modifier: Modifier = Modifier
) {
fun LoansTab(loansTabVm: LoanTabVm, toggleStatusBarColor: (String) -> Unit) {
val loansTabUiTronConfig = loansTabVm.loansTabUiTronData.collectAsStateWithLifecycle()
loansTabUiTronConfig.value.let { state ->
if (state is LoanTabVm.LoansTabUiTronScreenState.Success) {
RenderWidgets(loansTabVm, state.data, toggleStatusBarColor, modifier)
RenderWidgets(loansTabVm, state.data, toggleStatusBarColor)
}
}
}
@@ -47,8 +43,7 @@ fun LoansTab(
fun RenderWidgets(
loansTabVm: LoanTabVm,
data: ScreenDefinition,
toggleStatusBarColor: (String) -> Unit,
modifier: Modifier = Modifier
toggleStatusBarColor: (String) -> Unit
) {
data.screenStructure
?.header
@@ -65,7 +60,7 @@ fun RenderWidgets(
loansTabVm.handleActions(actionData = data.screenStructure?.renderActions?.postRenderAction)
val scrollState = rememberLazyListState()
Scaffold(
modifier = modifier.fillMaxSize(),
modifier = Modifier.fillMaxSize(),
content = {
CompositionLocalProvider(LocalOverscrollConfiguration provides null) {
LazyColumn(

View File

@@ -0,0 +1,36 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.naviapp.home.dashboard.ui.compose.loansTab
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.naviapp.home.utils.shimmerEffect
@Composable
fun LoansTabContentShimmer() {
Column(modifier = Modifier.fillMaxWidth().padding(start = 16.dp, end = 16.dp)) {
Box(modifier = Modifier.height(274.dp).fillMaxWidth().shimmerEffect())
Spacer(modifier = Modifier.height(32.dp))
Box(modifier = Modifier.height(24.dp).width(100.dp).shimmerEffect())
Spacer(modifier = Modifier.height(16.dp))
Box(modifier = Modifier.height(180.dp).fillMaxWidth().shimmerEffect())
Spacer(modifier = Modifier.height(32.dp))
Box(modifier = Modifier.height(24.dp).width(100.dp).shimmerEffect())
Spacer(modifier = Modifier.height(16.dp))
Box(modifier = Modifier.fillMaxHeight().fillMaxWidth().shimmerEffect())
}
}

View File

@@ -8,6 +8,7 @@
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
import androidx.compose.ui.platform.LocalLifecycleOwner
@@ -19,7 +20,6 @@ import com.navi.common.utils.Constants.HL_DYNAMIC_MODULE_NAME
import com.navi.common.utils.Constants.PL_DYNAMIC_MODULE_NAME
import com.navi.common.utils.isDynamicModuleInstalled
import com.naviapp.home.compose.activity.HomePageActivity
import com.naviapp.home.compose.home.ui.content.HomePageContentShimmer
import com.naviapp.home.dashboard.viewmodels.LoanTabVm
import com.naviapp.home.viewmodel.SharedVM
@@ -46,27 +46,28 @@ private fun InitObserver(
loansTabHelper: LoansTabHelper
) {
val lifecycleOwner = LocalLifecycleOwner.current
when (val shimmerState = viewModel.loansTabUiTronData.collectAsStateWithLifecycle().value) {
is LoanTabVm.LoansTabUiTronScreenState.Loading -> {
HomePageContentShimmer()
}
is LoanTabVm.LoansTabUiTronScreenState.Success -> {
LoansTab(
loansTabVm = viewModel,
toggleStatusBarColor = { loansTabHelper.toggleStatusBarColor(it, activity) },
modifier = modifier
)
}
is LoanTabVm.LoansTabUiTronScreenState.Error -> {
FullScreenErrorComposeView(
error = shimmerState.error,
onRetryClick = {
viewModel.fetchLoansTabUiTronConfigs(
cashLoanAppInstalled = isDynamicModuleInstalled(PL_DYNAMIC_MODULE_NAME),
homeLoanAppInstalled = isDynamicModuleInstalled(HL_DYNAMIC_MODULE_NAME)
)
}
)
Box(modifier = modifier) {
when (val shimmerState = viewModel.loansTabUiTronData.collectAsStateWithLifecycle().value) {
is LoanTabVm.LoansTabUiTronScreenState.Loading -> {
LoansTabContentShimmer()
}
is LoanTabVm.LoansTabUiTronScreenState.Success -> {
LoansTab(
loansTabVm = viewModel,
toggleStatusBarColor = { loansTabHelper.toggleStatusBarColor(it, activity) }
)
}
is LoanTabVm.LoansTabUiTronScreenState.Error -> {
FullScreenErrorComposeView(
error = shimmerState.error,
onRetryClick = {
viewModel.fetchLoansTabUiTronConfigs(
cashLoanAppInstalled = isDynamicModuleInstalled(PL_DYNAMIC_MODULE_NAME),
homeLoanAppInstalled = isDynamicModuleInstalled(HL_DYNAMIC_MODULE_NAME)
)
}
)
}
}
}
viewModel.redirectionCta.observe(lifecycleOwner) { ctaData ->