NTP-39209 | Narayan | Check balance during transaction experiment addition (#15116)
This commit is contained in:
committed by
GitHub
parent
37f33ae7ef
commit
5e8bdcdc1d
@@ -9,10 +9,12 @@ package com.navi.pay.common.usecase
|
||||
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.navi.base.utils.EMPTY
|
||||
import com.navi.base.utils.orTrue
|
||||
import com.navi.common.di.CoroutineDispatcherProvider
|
||||
import com.navi.common.network.models.RepoResult
|
||||
import com.navi.common.network.models.isSuccessWithData
|
||||
import com.navi.common.resourcemanager.manager.ResourceManager.exceptionHandler
|
||||
import com.navi.common.usecase.LitmusExperimentsUseCase
|
||||
import com.navi.common.utils.CommonUtils.getDisplayableAmount
|
||||
import com.navi.pay.common.model.config.NaviPayDefaultConfig
|
||||
import com.navi.pay.common.model.view.CheckBalanceAnalyticsEventData
|
||||
@@ -23,6 +25,7 @@ import com.navi.pay.onboarding.account.linked.model.network.CheckBalanceResponse
|
||||
import com.navi.pay.utils.CHECK_BALANCE_ERROR_TRANSITION_TOTAL_DURATION
|
||||
import com.navi.pay.utils.DEFAULT_CONFIG
|
||||
import com.navi.pay.utils.INVALID_PIN
|
||||
import com.navi.pay.utils.LITMUS_EXPERIMENT_NAVIPAY_CHECK_BALANCE_DURING_TRANSACTION
|
||||
import com.navi.pay.utils.RUPEE_SYMBOL
|
||||
import com.navi.pay.utils.isAccountIdOfTypeUpiLite
|
||||
import javax.inject.Inject
|
||||
@@ -42,11 +45,14 @@ class AccountListCheckBalanceUseCase
|
||||
constructor(
|
||||
private val checkAccountBalanceUseCase: CheckAccountBalanceUseCase,
|
||||
private val coroutineDispatcherProvider: CoroutineDispatcherProvider,
|
||||
private val litmusExperimentsUseCase: LitmusExperimentsUseCase,
|
||||
private val naviPayConfigUseCase: NaviPayConfigUseCase,
|
||||
) {
|
||||
val checkBalanceStateMap = mutableMapOf<String, MutableStateFlow<CheckBalanceState>>()
|
||||
private val timerJobMap = mutableMapOf<String, Job?>()
|
||||
|
||||
private val isCheckBalanceExperimentEnabled = MutableStateFlow(true)
|
||||
|
||||
private var naviPayDefaultConfig = NaviPayDefaultConfig()
|
||||
|
||||
private val checkBalanceGenericError = "Unable to load"
|
||||
@@ -56,6 +62,7 @@ constructor(
|
||||
|
||||
init {
|
||||
updateNaviPayDefaultConfig()
|
||||
setLitmusExperimentValues()
|
||||
}
|
||||
|
||||
suspend fun onCheckBalanceClicked(
|
||||
@@ -109,6 +116,11 @@ constructor(
|
||||
val currentCheckBalanceState = checkBalanceStateMap[linkedAccountEntity.accountId]?.value
|
||||
if (shouldIgnoreStateUpdate && currentCheckBalanceState != null) {
|
||||
return
|
||||
} else if (!isCheckBalanceExperimentEnabled.value) {
|
||||
updateCheckBalanceStateInStateMapForAccountId(
|
||||
accountId = linkedAccountEntity.accountId,
|
||||
checkBalanceState = CheckBalanceState.None,
|
||||
)
|
||||
} else if (
|
||||
isAccountEligible == false &&
|
||||
(currentCheckBalanceState is CheckBalanceState.Success ||
|
||||
@@ -170,6 +182,20 @@ constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun setLitmusExperimentValues() {
|
||||
coroutineScope.launch(coroutineDispatcherProvider.io) {
|
||||
isCheckBalanceExperimentEnabled.update {
|
||||
litmusExperimentsUseCase
|
||||
.execute(
|
||||
experimentName = LITMUS_EXPERIMENT_NAVIPAY_CHECK_BALANCE_DURING_TRANSACTION
|
||||
)
|
||||
?.variant
|
||||
?.enabled
|
||||
.orTrue()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateNaviPayDefaultConfig() {
|
||||
coroutineScope.launch(coroutineDispatcherProvider.io) {
|
||||
naviPayDefaultConfig =
|
||||
|
||||
@@ -168,6 +168,8 @@ const val NAVI_PAY_SYNC_TABLE_UPI_LITE_MANDATE_INFO = "upiLiteMandateInfo"
|
||||
const val LITMUS_EXPERIMENT_NAVIPAY_LITE_DEFAULT_ENTERED_AMOUNT =
|
||||
"NaviPay-lite-default-entered-amount"
|
||||
const val LITMUS_EXPERIMENT_NAVIPAY_ORDER_TAG_SUMMARY = "NaviPay-order-tag-summary"
|
||||
const val LITMUS_EXPERIMENT_NAVIPAY_CHECK_BALANCE_DURING_TRANSACTION =
|
||||
"NaviPay-exp-check-balance-during-transaction-v2"
|
||||
const val LITMUS_EXPERIMENT_NAVIPAY_SMV_BINDING = "NaviPay-exp-smv-binding"
|
||||
const val LITMUS_EXPERIMENT_NAVI_FESTIVE_THEME = "festive-theme"
|
||||
const val LITMUS_EXPERIMENT_NAVIPAY_OFFER_EXPERIENCE = "NaviPay-offer-experience"
|
||||
@@ -175,6 +177,7 @@ val NAVI_PAY_LITMUS_EXPERIMENTS =
|
||||
listOf(
|
||||
LITMUS_EXPERIMENT_NAVIPAY_LITE_DEFAULT_ENTERED_AMOUNT,
|
||||
LITMUS_EXPERIMENT_NAVIPAY_ORDER_TAG_SUMMARY,
|
||||
LITMUS_EXPERIMENT_NAVIPAY_CHECK_BALANCE_DURING_TRANSACTION,
|
||||
LITMUS_EXPERIMENT_NAVIPAY_SMV_BINDING,
|
||||
LITMUS_EXPERIMENT_NAVI_FESTIVE_THEME,
|
||||
LITMUS_EXPERIMENT_NAVIPAY_OFFER_EXPERIENCE,
|
||||
|
||||
Reference in New Issue
Block a user