NTP-21170 | PS | fix token not found error (#14287)
This commit is contained in:
@@ -24,7 +24,6 @@ import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.ACTION_TYPE
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.ERROR_RESPONSE
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.GET_METHOD_RESPONSE
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.PAYMENT_INITIATE_START_TIME
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.SCREEN_TYPE
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.SDK_PARAMS
|
||||
@@ -34,6 +33,7 @@ import com.navi.payment.nativepayment.model.PaymentActionType
|
||||
import com.navi.payment.nativepayment.model.S2sPaymentMethodResponse
|
||||
import com.navi.payment.nativepayment.repository.PaymentRepository
|
||||
import com.navi.payment.nativepayment.usecase.NetBankingUseCase
|
||||
import com.navi.payment.nativepayment.usecase.PmsLinkedAccountUseCase
|
||||
import com.navi.payment.nativepayment.utils.getPayloadBasedOnType
|
||||
import com.navi.payment.nativepayment.utils.toGenericErrorResponse
|
||||
import com.navi.payment.nativepayment.viewmodel.NaviPaymentBaseVM
|
||||
@@ -62,6 +62,7 @@ constructor(
|
||||
private val paymentDataProvider: PaymentDataProvider,
|
||||
@PaymentsSdkRetrofit private val deserializer: Gson,
|
||||
private val netBankingUseCase: NetBankingUseCase,
|
||||
private val pmsLinkedAccountUseCase: PmsLinkedAccountUseCase,
|
||||
private val litmusExperimentsUseCase: LitmusExperimentsUseCase
|
||||
) : NaviPaymentBaseVM(NaviPaymentAnalyticScreenName.CHECKOUT_SCREEN.screenName) {
|
||||
|
||||
@@ -72,8 +73,8 @@ constructor(
|
||||
paymentSdkInitParams: PaymentSdkInitParams,
|
||||
) {
|
||||
viewModelScope.safeLaunch {
|
||||
fetchPmsExperimentsData(paymentSdkInitParams.paymentSource.orEmpty())
|
||||
clearPaymentData()
|
||||
fetchPmsExperimentsData(paymentSdkInitParams.paymentSource.orEmpty())
|
||||
paymentDataProvider.add(PAYMENT_INITIATE_START_TIME, System.currentTimeMillis())
|
||||
_paymentResponse.emit(false)
|
||||
val connectedAccountsData =
|
||||
@@ -194,8 +195,7 @@ constructor(
|
||||
}
|
||||
|
||||
private fun clearPaymentData() {
|
||||
paymentDataProvider.remove(GET_METHOD_RESPONSE)
|
||||
paymentDataProvider.remove(ERROR_RESPONSE)
|
||||
paymentDataProvider.remove(PAYMENT_INITIATE_START_TIME)
|
||||
paymentDataProvider.clear()
|
||||
pmsLinkedAccountUseCase.clear()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
package com.navi.payment.nativepayment.usecase
|
||||
|
||||
import com.navi.base.AppServiceManager
|
||||
import com.navi.base.utils.isNull
|
||||
import com.navi.base.utils.orTrue
|
||||
import com.navi.pay.common.usecase.LinkedAccountsUseCase
|
||||
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
|
||||
import com.navi.payment.R
|
||||
@@ -20,6 +22,8 @@ import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.flatMapLatest
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
@Singleton
|
||||
@@ -27,56 +31,62 @@ class PmsLinkedAccountUseCase
|
||||
@Inject
|
||||
constructor(private val linkedAccountsUseCase: LinkedAccountsUseCase) {
|
||||
|
||||
private val disabledAccountId = mutableSetOf<String>()
|
||||
private val mutex = Mutex()
|
||||
private var disabledAccountIdSet: MutableSet<String>? = null
|
||||
|
||||
suspend fun execute(
|
||||
pmsConnectedAccounts: List<LinkedAccountEntity> = emptyList(),
|
||||
requireDisabledAccountUpdate: Boolean = false
|
||||
pmsConnectedAccounts: List<LinkedAccountEntity> = emptyList()
|
||||
): Flow<List<LinkedAccountEntity>> {
|
||||
if (pmsConnectedAccounts.isNotEmpty() && requireDisabledAccountUpdate) {
|
||||
val pmsConnectedAccountId = pmsConnectedAccounts.associateBy { it.accountId }
|
||||
linkedAccountsUseCase.execute(true).first().forEach { account ->
|
||||
if (
|
||||
pmsConnectedAccountId.contains(account.accountId).not() ||
|
||||
pmsConnectedAccountId[account.accountId]?.isDisabled == true
|
||||
) {
|
||||
disabledAccountId.add(account.accountId)
|
||||
mutex.withLock {
|
||||
if (pmsConnectedAccounts.isNotEmpty() && disabledAccountIdSet.isNull()) {
|
||||
disabledAccountIdSet = mutableSetOf()
|
||||
val pmsConnectedAccountId = pmsConnectedAccounts.associateBy { it.accountId }
|
||||
linkedAccountsUseCase.execute(true).first().forEach { account ->
|
||||
if (
|
||||
pmsConnectedAccountId.contains(account.accountId).not() ||
|
||||
pmsConnectedAccountId[account.accountId]?.isDisabled == true
|
||||
) {
|
||||
disabledAccountIdSet?.add(account.accountId)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return linkedAccountsUseCase.execute(true).flatMapLatest { list ->
|
||||
flow {
|
||||
coroutineScope {
|
||||
val updatedList =
|
||||
list.map { newAccount ->
|
||||
val isAccountEnabled =
|
||||
disabledAccountId.contains(newAccount.accountId).not()
|
||||
newAccount.apply {
|
||||
if (!isAccountEnabled) {
|
||||
isDisabled = true
|
||||
infoMessage =
|
||||
newAccount.infoMessage
|
||||
?: AppServiceManager.application.getString(
|
||||
R.string.payment_instrument_not_support
|
||||
)
|
||||
return linkedAccountsUseCase.execute(true).flatMapLatest { list ->
|
||||
flow {
|
||||
coroutineScope {
|
||||
val updatedList =
|
||||
list.map { newAccount ->
|
||||
val isAccountEnabled =
|
||||
disabledAccountIdSet
|
||||
?.contains(newAccount.accountId)
|
||||
?.not()
|
||||
.orTrue()
|
||||
newAccount.apply {
|
||||
if (!isAccountEnabled) {
|
||||
isDisabled = true
|
||||
infoMessage =
|
||||
newAccount.infoMessage
|
||||
?: AppServiceManager.application.getString(
|
||||
R.string.payment_instrument_not_support
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val connectedAccountsEligibilityMap =
|
||||
list.associate { it.accountId to it.eligibilityState }
|
||||
val connectedAccountsEligibilityMap =
|
||||
list.associate { it.accountId to it.eligibilityState }
|
||||
|
||||
updateAccountEligibilityStatus(
|
||||
connectedAccountsEligibilityMap = connectedAccountsEligibilityMap,
|
||||
connectedAccounts = updatedList,
|
||||
)
|
||||
emit(updatedList)
|
||||
updateAccountEligibilityStatus(
|
||||
connectedAccountsEligibilityMap = connectedAccountsEligibilityMap,
|
||||
connectedAccounts = updatedList,
|
||||
)
|
||||
emit(updatedList)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun clear() {
|
||||
disabledAccountId.clear()
|
||||
disabledAccountIdSet = null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,26 +581,18 @@ constructor(
|
||||
}
|
||||
}
|
||||
val finalList = mutableListOf<LinkedAccountEntity>()
|
||||
pmsLinkedAccountUseCase
|
||||
.execute(
|
||||
pmsConnectedAccounts = accountList,
|
||||
requireDisabledAccountUpdate =
|
||||
(paymentDataProvider.get(SCREEN_TYPE) as? String) ==
|
||||
NaviPaymentScreenType.MINI_PAYMENT_SCREEN.name
|
||||
)
|
||||
.first()
|
||||
.let {
|
||||
it.filter { account -> account.accountId.isAccountIdOfTypeUpiLite() }
|
||||
.forEach {
|
||||
it.eligibilityState =
|
||||
getEligibilityStateForUpiLiteAccount(
|
||||
paymentAmount.value,
|
||||
resourceProvider,
|
||||
it
|
||||
)
|
||||
}
|
||||
finalList.addAll(updateUpiAccountsRanking(it))
|
||||
}
|
||||
pmsLinkedAccountUseCase.execute(pmsConnectedAccounts = accountList).first().let {
|
||||
it.filter { account -> account.accountId.isAccountIdOfTypeUpiLite() }
|
||||
.forEach {
|
||||
it.eligibilityState =
|
||||
getEligibilityStateForUpiLiteAccount(
|
||||
paymentAmount.value,
|
||||
resourceProvider,
|
||||
it
|
||||
)
|
||||
}
|
||||
finalList.addAll(updateUpiAccountsRanking(it))
|
||||
}
|
||||
finalList.forEach {
|
||||
accountListCheckBalanceUseCase.updateCheckBalanceStateForLinkedAccount(
|
||||
linkedAccountEntity = it,
|
||||
|
||||
@@ -54,7 +54,6 @@ import com.navi.payment.nativepayment.NaviPaymentAnalytics
|
||||
import com.navi.payment.nativepayment.common.usecase.TransactionStatusUseCase
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.PAYMENT_ORDER_REFERENCE_ID
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.SCREEN_TYPE
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.TRANSACTION_REFERENCE_ID
|
||||
import com.navi.payment.nativepayment.dataprovider.getMpinSetAction
|
||||
import com.navi.payment.nativepayment.db.model.BankEntity
|
||||
@@ -413,26 +412,18 @@ constructor(
|
||||
paymentAmount
|
||||
}
|
||||
val finalList = mutableListOf<LinkedAccountEntity>()
|
||||
pmsLinkedAccountUseCase
|
||||
.execute(
|
||||
pmsConnectedAccounts = accountList,
|
||||
requireDisabledAccountUpdate =
|
||||
(paymentDataProvider.get(SCREEN_TYPE) as? String) ==
|
||||
NaviPaymentScreenType.FULL_PAYMENT_SCREEN.name
|
||||
)
|
||||
.first()
|
||||
.let {
|
||||
it.filter { account -> account.accountId.isAccountIdOfTypeUpiLite() }
|
||||
.forEach {
|
||||
it.eligibilityState =
|
||||
getEligibilityStateForUpiLiteAccount(
|
||||
discountAdjustedAmount,
|
||||
resourceProvider,
|
||||
it
|
||||
)
|
||||
}
|
||||
finalList.addAll(updateUpiAccountsRanking(it))
|
||||
}
|
||||
pmsLinkedAccountUseCase.execute(pmsConnectedAccounts = accountList).first().let {
|
||||
it.filter { account -> account.accountId.isAccountIdOfTypeUpiLite() }
|
||||
.forEach {
|
||||
it.eligibilityState =
|
||||
getEligibilityStateForUpiLiteAccount(
|
||||
discountAdjustedAmount,
|
||||
resourceProvider,
|
||||
it
|
||||
)
|
||||
}
|
||||
finalList.addAll(updateUpiAccountsRanking(it))
|
||||
}
|
||||
finalList.forEach {
|
||||
accountListCheckBalanceUseCase.updateCheckBalanceStateForLinkedAccount(
|
||||
linkedAccountEntity = it,
|
||||
|
||||
@@ -112,10 +112,4 @@ constructor(
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
paymentDataProvider.clear()
|
||||
pmsLinkedAccountUseCase.clear()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user