NTP-7179 | Narayan | Rewards auto popup animation button logic fixed (#13782)

This commit is contained in:
Aditya Narayan Malik
2024-11-30 13:58:50 +05:30
committed by GitHub
parent f3b6e0f717
commit 4fddcafaad
3 changed files with 39 additions and 11 deletions

View File

@@ -151,6 +151,8 @@ fun PaymentSummaryScreen(
paymentSummaryViewModel.naviPayDefaultConfig.collectAsStateWithLifecycle()
val upiAppLogoS3BaseUrl =
remember(naviPayDefaultConfig) { naviPayDefaultConfig.value.config.upiAppLogoS3BaseUrl }
val shouldPlayScratchAndWinCtaAnimation by
paymentSummaryViewModel.shouldPlayScratchAndWinCtaAnimation.collectAsStateWithLifecycle()
val upiAppsIconList =
remember(naviPayDefaultConfig) { naviPayDefaultConfig.value.config.upiAppsIconList }
@@ -488,6 +490,8 @@ fun PaymentSummaryScreen(
paymentSummaryViewModel.rewardsBottomStripeSectionAnimationDuration,
scratchCardBottomMovementAnimationDuration =
paymentSummaryViewModel.scratchCardBottomMovementAnimationDuration,
shouldPlayScratchAndWinCtaAnimation =
shouldPlayScratchAndWinCtaAnimation
)
}
}

View File

@@ -139,7 +139,8 @@ fun SharedTransitionScope.PaymentSummaryTransactionDetailSection(
isRewardsCtaVisible: Boolean,
scratchCardRotationAnimationDuration: Int,
rewardsBottomStripeSectionAnimationDuration: Int,
scratchCardBottomMovementAnimationDuration: Int
scratchCardBottomMovementAnimationDuration: Int,
shouldPlayScratchAndWinCtaAnimation: Boolean
) {
val onViewDetailCtaClicked = {
@@ -268,7 +269,8 @@ fun SharedTransitionScope.PaymentSummaryTransactionDetailSection(
rewardsBottomStripeSectionAnimationDuration =
rewardsBottomStripeSectionAnimationDuration,
scratchCardBottomMovementAnimationDuration =
scratchCardBottomMovementAnimationDuration
scratchCardBottomMovementAnimationDuration,
shouldPlayScratchAndWinCtaAnimation = shouldPlayScratchAndWinCtaAnimation
)
}
)
@@ -577,7 +579,8 @@ private fun SharedTransitionScope.BottomBarSection(
isRewardsCtaVisible: Boolean,
scratchCardRotationAnimationDuration: Int,
rewardsBottomStripeSectionAnimationDuration: Int,
scratchCardBottomMovementAnimationDuration: Int
scratchCardBottomMovementAnimationDuration: Int,
shouldPlayScratchAndWinCtaAnimation: Boolean
) {
Column(modifier = Modifier.padding(top = 16.dp)) {
if (isRewardsCtaVisible) {
@@ -615,12 +618,24 @@ private fun SharedTransitionScope.BottomBarSection(
Spacer(modifier = Modifier.width(16.dp))
if (isRewardsCtaVisible) {
ScratchAndWinButtonSection(
modifier = Modifier.weight(1f),
onClick = onRewardsCtaClicked,
scratchAndWinButtonAnimationDuration = scratchAndWinButtonAnimationDuration,
scratchAndWinButtonAnimationDelay = scratchAndWinButtonAnimationDelay
)
if (shouldPlayScratchAndWinCtaAnimation)
ScratchAndWinButtonSectionWithProgressAnimation(
modifier = Modifier.weight(1f),
onClick = onRewardsCtaClicked,
scratchAndWinButtonAnimationDuration = scratchAndWinButtonAnimationDuration,
scratchAndWinButtonAnimationDelay = scratchAndWinButtonAnimationDelay
)
else {
ThemeRoundedButtonWithImage(
text = stringResource(id = R.string.np_scratch_and_win),
imageResId = CommonR.drawable.ic_scratch_card,
fontSize = 12.sp,
modifier = Modifier.weight(1f),
onClick = onTransactionDetailSectionBottomNavigationCtaButtonClicked,
paddingValues = PaddingValues(horizontal = 16.dp, vertical = 12.dp),
rippleColor = NaviPayColor.bgDefault
)
}
} else {
ThemeRoundedButtonV2(
text = stringResource(id = R.string.done),
@@ -850,7 +865,7 @@ private fun RewardsWonGratificationSection(
}
@Composable
private fun ScratchAndWinButtonSection(
private fun ScratchAndWinButtonSectionWithProgressAnimation(
modifier: Modifier,
onClick: (String) -> Unit,
scratchAndWinButtonAnimationDuration: Long,

View File

@@ -145,6 +145,9 @@ constructor(
private val _isScratchCardRotationVisible = MutableStateFlow(false)
val isScratchCardRotationVisible = _isScratchCardRotationVisible.asStateFlow()
private val _shouldPlayScratchAndWinCtaAnimation = MutableStateFlow(false)
val shouldPlayScratchAndWinCtaAnimation = _shouldPlayScratchAndWinCtaAnimation.asStateFlow()
private val isNotificationPermissionAllowed = MutableStateFlow(true)
private val _requestForPushNotificationPermission = MutableSharedFlow<Boolean>()
@@ -577,9 +580,15 @@ constructor(
.get(key = NAVI_PAY_AUTO_POPUP_SCRATCH_CARD_COUNTER)
?.value
?.toIntOrNull() ?: 0
if (autoPopupCounter < naviPayDefaultConfig.value.config.scratchCardAutoPopupMaxCount) {
_shouldPlayScratchAndWinCtaAnimation.update { true }
}
delay(scratchCardAutoPopupDelay)
if (
autoPopupCounter <= naviPayDefaultConfig.value.config.scratchCardAutoPopupMaxCount &&
autoPopupCounter < naviPayDefaultConfig.value.config.scratchCardAutoPopupMaxCount &&
rewardsGratificationUIState.value is
PaymentSummaryRewardsGratificationUIState.Gratification
) {