NTP-2285 | UAT fixes (#13018)
This commit is contained in:
@@ -17,6 +17,7 @@ import androidx.compose.foundation.layout.Box
|
|||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
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.width
|
||||||
import androidx.compose.foundation.layout.wrapContentHeight
|
import androidx.compose.foundation.layout.wrapContentHeight
|
||||||
import androidx.compose.foundation.layout.wrapContentSize
|
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.ModalBottomSheetState
|
||||||
import androidx.compose.material.ModalBottomSheetValue
|
import androidx.compose.material.ModalBottomSheetValue
|
||||||
import androidx.compose.material.rememberModalBottomSheetState
|
import androidx.compose.material.rememberModalBottomSheetState
|
||||||
import androidx.compose.material3.HorizontalDivider
|
import androidx.compose.material3.HorizontalDivider
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
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.getFontWeight
|
||||||
import com.navi.design.theme.ttComposeFontFamily
|
import com.navi.design.theme.ttComposeFontFamily
|
||||||
import com.navi.naviwidgets.extensions.NaviText
|
import com.navi.naviwidgets.extensions.NaviText
|
||||||
import com.navi.naviwidgets.extensions.debounceClickable
|
|
||||||
import com.navi.pay.R
|
import com.navi.pay.R
|
||||||
import com.navi.pay.analytics.NaviPayAnalytics
|
import com.navi.pay.analytics.NaviPayAnalytics
|
||||||
import com.navi.pay.analytics.NaviPayAnalytics.Companion.NAVI_PAY_CHECK_BALANCE_SCREEN
|
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 context = LocalContext.current as Activity
|
||||||
|
val scrollState = rememberScrollState()
|
||||||
NaviPayModalBottomSheetLayout(
|
NaviPayModalBottomSheetLayout(
|
||||||
sheetState = bottomSheetState,
|
sheetState = bottomSheetState,
|
||||||
sheetContent = {
|
sheetContent = {
|
||||||
@@ -329,62 +333,78 @@ private fun RenderLinkedAccountBalanceScreen(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.fillMaxWidth()) {
|
Scaffold(
|
||||||
NaviPayHeader(
|
topBar = {
|
||||||
title = stringResource(id = getHeaderTitle(linkedAccountEntity.accountType)),
|
NaviPayHeader(
|
||||||
onNavigationIconClick = { navigator.navigateUp() },
|
title = stringResource(id = getHeaderTitle(linkedAccountEntity.accountType)),
|
||||||
modifier = Modifier,
|
onNavigationIconClick = { navigator.navigateUp() },
|
||||||
actionIconText = helpCtaText,
|
modifier = Modifier,
|
||||||
onActionClick = onHelpClicked,
|
actionIconText = helpCtaText,
|
||||||
backgroundColor = NaviPayColor.bgNonEditable
|
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(
|
TransactionEntryPointCard(
|
||||||
linkedAccountEntity = linkedAccountEntity,
|
transactionEntrypointData = transactionEntrypointData,
|
||||||
onRefreshIconClicked = onRefreshIconClicked,
|
accountType = linkedAccountEntity.accountType,
|
||||||
showRefreshLoader = showRefreshLoader,
|
redirectOnClick = redirectOnClick
|
||||||
currentBalance = currentBalance,
|
)
|
||||||
outstandingBalance = outstandingBalance,
|
|
||||||
showShimmer = showShimmer,
|
|
||||||
hideBalance = hideBalance
|
|
||||||
)
|
|
||||||
|
|
||||||
TransactionEntryPointCard(
|
Spacer(modifier = Modifier.height(32.dp))
|
||||||
transactionEntrypointData = transactionEntrypointData,
|
|
||||||
accountType = linkedAccountEntity.accountType,
|
|
||||||
redirectOnClick = redirectOnClick
|
|
||||||
)
|
|
||||||
|
|
||||||
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(
|
Spacer(modifier = Modifier.height(48.dp))
|
||||||
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())
|
|
||||||
}
|
}
|
||||||
AccountType.UPICREDIT.name -> {
|
},
|
||||||
NaviPayCreditLineSponsorView(modifier = Modifier.fillMaxWidth())
|
bottomBar = {
|
||||||
}
|
Column(modifier = Modifier.background(NaviPayColor.ctaWhite)) {
|
||||||
else -> {
|
Spacer(modifier = Modifier.height(16.dp))
|
||||||
NaviPaySponsorView(modifier = Modifier.fillMaxWidth())
|
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,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
if (showShimmer) {
|
if (showShimmer) {
|
||||||
Box(modifier = Modifier.height(24.dp).width(144.dp).shimmerEffect())
|
Box(modifier = Modifier.height(20.dp).width(144.dp).shimmerEffect())
|
||||||
} else {
|
} else {
|
||||||
NaviText(
|
NaviText(
|
||||||
modifier = Modifier.weight(1f, false),
|
modifier = Modifier.weight(1f, false),
|
||||||
@@ -795,7 +815,7 @@ fun TransactionEntryPointCard(
|
|||||||
val account = remember { AccountType.getAccountType(accountType).name }
|
val account = remember { AccountType.getAccountType(accountType).name }
|
||||||
Box(modifier = Modifier.fillMaxWidth().background(NaviPayColor.bgNonEditable)) {
|
Box(modifier = Modifier.fillMaxWidth().background(NaviPayColor.bgNonEditable)) {
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterHorizontally),
|
horizontalArrangement = Arrangement.SpaceEvenly,
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 24.dp)
|
modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 24.dp)
|
||||||
) {
|
) {
|
||||||
@@ -805,7 +825,7 @@ fun TransactionEntryPointCard(
|
|||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
modifier =
|
modifier =
|
||||||
Modifier.wrapContentSize()
|
Modifier.wrapContentSize()
|
||||||
.debounceClickable(
|
.clickableDebounce(
|
||||||
onClick = { redirectOnClick.invoke(itemData.ctaData) }
|
onClick = { redirectOnClick.invoke(itemData.ctaData) }
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@@ -814,7 +834,7 @@ fun TransactionEntryPointCard(
|
|||||||
backgroundColor = NaviPayColor.bgAlt,
|
backgroundColor = NaviPayColor.bgAlt,
|
||||||
fallbackIconUrl = CommonR.drawable.ic_upi_bbps_default_bank_logo,
|
fallbackIconUrl = CommonR.drawable.ic_upi_bbps_default_bank_logo,
|
||||||
boxSize = 64.dp,
|
boxSize = 64.dp,
|
||||||
imageSize = 36.dp,
|
imageSize = 32.dp,
|
||||||
borderWidth = 1.dp,
|
borderWidth = 1.dp,
|
||||||
borderColor = NaviPayColor.borderDefault
|
borderColor = NaviPayColor.borderDefault
|
||||||
)
|
)
|
||||||
@@ -827,7 +847,9 @@ fun TransactionEntryPointCard(
|
|||||||
fontFamily = ttComposeFontFamily,
|
fontFamily = ttComposeFontFamily,
|
||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
fontWeight = getFontWeight(FontWeightEnum.NAVI_HEADLINE_REGULAR),
|
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) {
|
if (showRefreshLoader) {
|
||||||
NaviPayLottieAnimation(
|
NaviPayLottieAnimation(
|
||||||
lottieFileName = NAVI_PAY_PURPLE_CTA_LOADER_LOTTIE,
|
lottieFileName = NAVI_PAY_PURPLE_CTA_LOADER_LOTTIE,
|
||||||
modifier = Modifier
|
modifier = Modifier.size(20.dp)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Image(
|
Image(
|
||||||
@@ -936,14 +958,14 @@ private fun HideBalanceView(
|
|||||||
if (showRefreshLoader) {
|
if (showRefreshLoader) {
|
||||||
NaviPayLottieAnimation(
|
NaviPayLottieAnimation(
|
||||||
lottieFileName = NAVI_PAY_PURPLE_CTA_LOADER_LOTTIE,
|
lottieFileName = NAVI_PAY_PURPLE_CTA_LOADER_LOTTIE,
|
||||||
modifier = Modifier
|
modifier = Modifier.size(20.dp)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
NaviText(
|
NaviText(
|
||||||
text = stringResource(R.string.check_balance),
|
text = stringResource(R.string.check_balance),
|
||||||
fontSize = 14.sp,
|
fontSize = 14.sp,
|
||||||
fontFamily = ttComposeFontFamily,
|
fontFamily = ttComposeFontFamily,
|
||||||
color = NaviPayColor.textPrimary,
|
color = NaviPayColor.ctaPrimary,
|
||||||
fontWeight = getFontWeight(FontWeightEnum.NAVI_HEADLINE_REGULAR),
|
fontWeight = getFontWeight(FontWeightEnum.NAVI_HEADLINE_REGULAR),
|
||||||
textDecoration = TextDecoration.Underline,
|
textDecoration = TextDecoration.Underline,
|
||||||
modifier = Modifier.clickableDebounce { onCheckBalanceClicked() }
|
modifier = Modifier.clickableDebounce { onCheckBalanceClicked() }
|
||||||
|
|||||||
@@ -1494,10 +1494,9 @@ constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(DelicateCoroutinesApi::class)
|
||||||
private fun syncLiteAccountInfo() {
|
private fun syncLiteAccountInfo() {
|
||||||
viewModelScope.safeLaunch(coroutineDispatcherProvider.io) {
|
GlobalScope.safeLaunch(coroutineDispatcherProvider.io) { liteAccountSyncUseCase.execute() }
|
||||||
liteAccountSyncUseCase.execute()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateCdsPermissionStatus() {
|
fun updateCdsPermissionStatus() {
|
||||||
|
|||||||
Reference in New Issue
Block a user