From bf04dfc1ed47645439ec2a31b3af4129bfa5e88c Mon Sep 17 00:00:00 2001 From: Shiv Natani Date: Mon, 16 Dec 2024 14:30:31 +0530 Subject: [PATCH] NTP-19516 | Shiv Natani | enabled christmas celebration experience (#14150) --- .../screens/TransactionPollingScreen.kt | 16 +++++++++++-- .../viewmodel/TransactionPollingViewModel.kt | 23 ++++++++++++++++++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/TransactionPollingScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/TransactionPollingScreen.kt index ce6b14791b..e70e1348da 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/TransactionPollingScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/TransactionPollingScreen.kt @@ -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) }, diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/TransactionPollingViewModel.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/TransactionPollingViewModel.kt index dd53d5b72c..1a965805b1 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/TransactionPollingViewModel.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/TransactionPollingViewModel.kt @@ -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("token").orEmpty() @@ -93,8 +97,13 @@ constructor( private val _statusBarColorForLottieTransition = MutableSharedFlow() 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 =