TP-71020 | Loans Tab Flicker Issue Fix (#11464)
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
@@ -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 ->
|
||||
|
||||
Reference in New Issue
Block a user