NTP-19516 | Shiv Natani | enabled christmas celebration experience (#14150)

This commit is contained in:
Shiv Natani
2024-12-16 14:30:31 +05:30
committed by GitHub
parent 72b72db025
commit bf04dfc1ed
2 changed files with 36 additions and 3 deletions

View File

@@ -41,7 +41,9 @@ import com.navi.pay.common.ui.FullScreenLottie
import com.navi.pay.common.ui.FullScreenLottieV2
import com.navi.pay.common.ui.NaviPayLottieAnimationV2
import com.navi.pay.common.utils.NaviPayMediaPlayer
import com.navi.pay.utils.NAVI_PAY_PAYMENT_PROGRESS_CHRISTMAS_CELEBRATION_LOTTIE
import com.navi.pay.utils.NAVI_PAY_PAYMENT_PROGRESS_LOTTIE
import com.navi.pay.utils.NAVI_PAY_PAYMENT_SUCCESSFUL_CHRISTMAS_CELEBRATION_LOTTIE
import com.navi.pay.utils.NAVI_PAY_PAYMENT_SUCCESSFUL_MAIN_LOTTIE_V2
import com.navi.pay.utils.clearBackStackUpToAndNavigate
import com.navi.pay.utils.getDisplayableAmount
@@ -126,6 +128,10 @@ fun TransactionPollingScreen(
NaviPayMediaPlayer(activityRef = WeakReference(naviPaymentActivity))
}
val isChristmasCelebrationExperimentEnabled by
transactionPollingViewModel.isChristmasCelebrationExperimentEnabled
.collectAsStateWithLifecycle()
val finishWithData: (statusResponse: TransactionStatusResponse?) -> Unit = {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
naviPaymentActivity.setTranslucent(false)
@@ -236,7 +242,10 @@ fun TransactionPollingScreen(
FullScreenLottie(lottieFileName = "gold_processing_transaction_lottie.json")
} else {
FullScreenLottieV2(
lottieFileName = NAVI_PAY_PAYMENT_PROGRESS_LOTTIE,
lottieFileName =
if (isChristmasCelebrationExperimentEnabled)
NAVI_PAY_PAYMENT_PROGRESS_CHRISTMAS_CELEBRATION_LOTTIE
else NAVI_PAY_PAYMENT_PROGRESS_LOTTIE,
title =
stringResource(
id = R.string.payment_in_progress_v2,
@@ -248,7 +257,10 @@ fun TransactionPollingScreen(
}
is PollingScreenState.Success -> {
NaviPayLottieAnimationV2(
lottieFileName = NAVI_PAY_PAYMENT_SUCCESSFUL_MAIN_LOTTIE_V2,
lottieFileName =
if (isChristmasCelebrationExperimentEnabled)
NAVI_PAY_PAYMENT_SUCCESSFUL_CHRISTMAS_CELEBRATION_LOTTIE
else NAVI_PAY_PAYMENT_SUCCESSFUL_MAIN_LOTTIE_V2,
onAnimationEnd = {
finishWithData.invoke((screenState as PollingScreenState.Success).data)
},

View File

@@ -15,10 +15,13 @@ import com.navi.base.utils.MILLISECONDS_PER_SECOND
import com.navi.base.utils.SUCCESS
import com.navi.base.utils.isNotNull
import com.navi.base.utils.isNotNullAndNotEmpty
import com.navi.base.utils.orFalse
import com.navi.common.model.RequestConfig
import com.navi.common.network.models.isSuccessWithData
import com.navi.common.usecase.LitmusExperimentsUseCase
import com.navi.pay.R
import com.navi.pay.common.theme.color.NaviPayColor
import com.navi.pay.utils.LITMUS_EXPERIMENT_NAVIPAY_CHRISTMAS_CELEBRATION
import com.navi.payment.model.common.SignalPaymentData
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
import com.navi.payment.nativepayment.common.usecase.TransactionStatusUseCase
@@ -62,7 +65,8 @@ constructor(
savedStateHandle: SavedStateHandle,
private val paymentRepository: PaymentRepository,
private val dataProvider: PaymentDataProvider,
private val transactionStatusUseCase: TransactionStatusUseCase
private val transactionStatusUseCase: TransactionStatusUseCase,
private val litmusExperimentsUseCase: LitmusExperimentsUseCase
) : NaviPaymentBaseVM(NaviPaymentAnalyticScreenName.TRANSACTION_POLLING_SCREEN.screenName) {
private val token = savedStateHandle.get<String>("token").orEmpty()
@@ -93,8 +97,13 @@ constructor(
private val _statusBarColorForLottieTransition = MutableSharedFlow<Int>()
val statusBarColorForLottieTransition = _statusBarColorForLottieTransition.asSharedFlow()
private val _isChristmasCelebrationExperimentEnabled = MutableStateFlow(false)
val isChristmasCelebrationExperimentEnabled =
_isChristmasCelebrationExperimentEnabled.asStateFlow()
init {
pollTransactionStatus()
setLitmusExperimentValues()
viewModelScope.launch(Dispatchers.IO) {
transactionStatusUseCase.deleteTransactionStatusRequest(
request?.transactionReferenceId.orEmpty()
@@ -102,6 +111,18 @@ constructor(
}
}
private fun setLitmusExperimentValues() {
viewModelScope.safeLaunch(Dispatchers.IO) {
_isChristmasCelebrationExperimentEnabled.update {
litmusExperimentsUseCase
.execute(experimentName = LITMUS_EXPERIMENT_NAVIPAY_CHRISTMAS_CELEBRATION)
?.variant
?.enabled
.orFalse()
}
}
}
private fun pollTransactionStatus(pollingCount: Int = 0) {
viewModelScope.launch {
val transactionStatusData =