From 977515be759afd96215f618434dca2726a6c603e Mon Sep 17 00:00:00 2001 From: shreyansu raj Date: Thu, 10 Oct 2024 20:33:49 +0530 Subject: [PATCH] NTP-2285 | UAT fixes (#13018) --- .../common/ui/LinkedAccountBalanceScreen.kt | 138 ++++++++++-------- .../viewmodel/NaviPayOnboardingViewModel.kt | 5 +- 2 files changed, 82 insertions(+), 61 deletions(-) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt index 52916b13c3..3d25870e1f 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt @@ -17,6 +17,7 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -24,11 +25,14 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.ModalBottomSheetState import androidx.compose.material.ModalBottomSheetValue import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect @@ -69,7 +73,6 @@ import com.navi.design.font.FontWeightEnum import com.navi.design.theme.getFontWeight import com.navi.design.theme.ttComposeFontFamily import com.navi.naviwidgets.extensions.NaviText -import com.navi.naviwidgets.extensions.debounceClickable import com.navi.pay.R import com.navi.pay.analytics.NaviPayAnalytics import com.navi.pay.analytics.NaviPayAnalytics.Companion.NAVI_PAY_CHECK_BALANCE_SCREEN @@ -316,6 +319,7 @@ private fun RenderLinkedAccountBalanceScreen( ) { val context = LocalContext.current as Activity + val scrollState = rememberScrollState() NaviPayModalBottomSheetLayout( sheetState = bottomSheetState, sheetContent = { @@ -329,62 +333,78 @@ private fun RenderLinkedAccountBalanceScreen( ) } ) { - Column(modifier = Modifier.fillMaxWidth()) { - NaviPayHeader( - title = stringResource(id = getHeaderTitle(linkedAccountEntity.accountType)), - onNavigationIconClick = { navigator.navigateUp() }, - modifier = Modifier, - actionIconText = helpCtaText, - onActionClick = onHelpClicked, - backgroundColor = NaviPayColor.bgNonEditable - ) + Scaffold( + topBar = { + NaviPayHeader( + title = stringResource(id = getHeaderTitle(linkedAccountEntity.accountType)), + onNavigationIconClick = { navigator.navigateUp() }, + modifier = Modifier, + actionIconText = helpCtaText, + onActionClick = onHelpClicked, + backgroundColor = NaviPayColor.bgNonEditable + ) + }, + content = { padding -> + Column( + modifier = + Modifier.background(color = NaviPayColor.bgDefault) + .fillMaxSize() + .verticalScroll(scrollState) + .padding(padding) + ) { + AccountBalanceDetailHeader( + linkedAccountEntity = linkedAccountEntity, + onRefreshIconClicked = onRefreshIconClicked, + showRefreshLoader = showRefreshLoader, + currentBalance = currentBalance, + outstandingBalance = outstandingBalance, + showShimmer = showShimmer, + hideBalance = hideBalance + ) - AccountBalanceDetailHeader( - linkedAccountEntity = linkedAccountEntity, - onRefreshIconClicked = onRefreshIconClicked, - showRefreshLoader = showRefreshLoader, - currentBalance = currentBalance, - outstandingBalance = outstandingBalance, - showShimmer = showShimmer, - hideBalance = hideBalance - ) + TransactionEntryPointCard( + transactionEntrypointData = transactionEntrypointData, + accountType = linkedAccountEntity.accountType, + redirectOnClick = redirectOnClick + ) - TransactionEntryPointCard( - transactionEntrypointData = transactionEntrypointData, - accountType = linkedAccountEntity.accountType, - redirectOnClick = redirectOnClick - ) + Spacer(modifier = Modifier.height(32.dp)) - Spacer(modifier = Modifier.height(32.dp)) + AdverseViewRoot( + modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp), + activity = context, + realEstateId = + FirebaseRemoteConfigHelper.getString( + NAVI_CHECK_BALANCE_CROSS_SELL_AD_RE_ID + ), + timeoutInMillis = + FirebaseRemoteConfigHelper.getLong( + NAVI_CHECK_BALANCE_CROSS_SELL_AD_FALLBACK_TIMEOUT + ), + loadingView = { CrossSellLoadingShimmer(it) } + ) - AdverseViewRoot( - modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp), - activity = context, - realEstateId = - FirebaseRemoteConfigHelper.getString(NAVI_CHECK_BALANCE_CROSS_SELL_AD_RE_ID), - timeoutInMillis = - FirebaseRemoteConfigHelper.getLong( - NAVI_CHECK_BALANCE_CROSS_SELL_AD_FALLBACK_TIMEOUT - ), - loadingView = { CrossSellLoadingShimmer(it) } - ) - - Spacer(modifier = Modifier.weight(1f)) - - when (linkedAccountEntity.accountType) { - AccountType.CREDIT.name -> { - NaviPayCreditCardSponsorView(modifier = Modifier.fillMaxWidth()) + Spacer(modifier = Modifier.height(48.dp)) } - AccountType.UPICREDIT.name -> { - NaviPayCreditLineSponsorView(modifier = Modifier.fillMaxWidth()) - } - else -> { - NaviPaySponsorView(modifier = Modifier.fillMaxWidth()) + }, + bottomBar = { + Column(modifier = Modifier.background(NaviPayColor.ctaWhite)) { + Spacer(modifier = Modifier.height(16.dp)) + when (linkedAccountEntity.accountType) { + AccountType.CREDIT.name -> { + NaviPayCreditCardSponsorView(modifier = Modifier.fillMaxWidth()) + } + AccountType.UPICREDIT.name -> { + NaviPayCreditLineSponsorView(modifier = Modifier.fillMaxWidth()) + } + else -> { + NaviPaySponsorView(modifier = Modifier.fillMaxWidth()) + } + } + Spacer(modifier = Modifier.height(32.dp)) } } - - Spacer(modifier = Modifier.height(40.dp)) - } + ) } } @@ -748,7 +768,7 @@ fun CreditDetailsHeaderUI( verticalAlignment = Alignment.CenterVertically, ) { if (showShimmer) { - Box(modifier = Modifier.height(24.dp).width(144.dp).shimmerEffect()) + Box(modifier = Modifier.height(20.dp).width(144.dp).shimmerEffect()) } else { NaviText( modifier = Modifier.weight(1f, false), @@ -795,7 +815,7 @@ fun TransactionEntryPointCard( val account = remember { AccountType.getAccountType(accountType).name } Box(modifier = Modifier.fillMaxWidth().background(NaviPayColor.bgNonEditable)) { Row( - horizontalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterHorizontally), + horizontalArrangement = Arrangement.SpaceEvenly, verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 24.dp) ) { @@ -805,7 +825,7 @@ fun TransactionEntryPointCard( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.wrapContentSize() - .debounceClickable( + .clickableDebounce( onClick = { redirectOnClick.invoke(itemData.ctaData) } ) ) { @@ -814,7 +834,7 @@ fun TransactionEntryPointCard( backgroundColor = NaviPayColor.bgAlt, fallbackIconUrl = CommonR.drawable.ic_upi_bbps_default_bank_logo, boxSize = 64.dp, - imageSize = 36.dp, + imageSize = 32.dp, borderWidth = 1.dp, borderColor = NaviPayColor.borderDefault ) @@ -827,7 +847,9 @@ fun TransactionEntryPointCard( fontFamily = ttComposeFontFamily, maxLines = 2, fontWeight = getFontWeight(FontWeightEnum.NAVI_HEADLINE_REGULAR), - textAlign = TextAlign.Center + textAlign = TextAlign.Center, + modifier = Modifier.width(70.dp), + overflow = TextOverflow.Ellipsis ) } } @@ -891,7 +913,7 @@ private fun AvailableBalanceView( if (showRefreshLoader) { NaviPayLottieAnimation( lottieFileName = NAVI_PAY_PURPLE_CTA_LOADER_LOTTIE, - modifier = Modifier + modifier = Modifier.size(20.dp) ) } else { Image( @@ -936,14 +958,14 @@ private fun HideBalanceView( if (showRefreshLoader) { NaviPayLottieAnimation( lottieFileName = NAVI_PAY_PURPLE_CTA_LOADER_LOTTIE, - modifier = Modifier + modifier = Modifier.size(20.dp) ) } else { NaviText( text = stringResource(R.string.check_balance), fontSize = 14.sp, fontFamily = ttComposeFontFamily, - color = NaviPayColor.textPrimary, + color = NaviPayColor.ctaPrimary, fontWeight = getFontWeight(FontWeightEnum.NAVI_HEADLINE_REGULAR), textDecoration = TextDecoration.Underline, modifier = Modifier.clickableDebounce { onCheckBalanceClicked() } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModel.kt index 59f1b36169..5e7ad1ff4a 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModel.kt @@ -1494,10 +1494,9 @@ constructor( ) } + @OptIn(DelicateCoroutinesApi::class) private fun syncLiteAccountInfo() { - viewModelScope.safeLaunch(coroutineDispatcherProvider.io) { - liteAccountSyncUseCase.execute() - } + GlobalScope.safeLaunch(coroutineDispatcherProvider.io) { liteAccountSyncUseCase.execute() } } fun updateCdsPermissionStatus() {