TP-53705 | Narayan | Cred Items Refactor (#9278)

This commit is contained in:
Aditya Narayan Malik
2024-01-09 20:53:17 +05:30
committed by GitHub
parent db08f3b2ad
commit 7ae96eb642
2 changed files with 92 additions and 32 deletions

View File

@@ -1,11 +1,16 @@
package com.navi.pay.npcicl
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
import com.navi.pay.utils.PIPE
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_AADHAAR
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_ATMPIN
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_DEBIT_NUM
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_IDENTITY
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_MPIN
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_NMPIN
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_OTP
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_PIN
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_SIGNATURE
import org.npci.upi.security.pinactivitycomponent.CLConstants.CREDTYPE_SMS
class CredItemsProvider {
@@ -21,16 +26,32 @@ class CredItemsProvider {
const val CRED_TYPE_UPI_LITE_SEND_MONEY = "upiLiteSendMoney"
const val DEFAULT_REG_FORMAT = "NO_FORMAT"
private const val UPI_LITE_D_LENGTH = "2048"
private const val ALPH = "ALPH"
private const val DEVICE = "DEVICE"
private const val ARQC = "ARQC"
private const val FORMAT1 = "FORMAT1"
private const val FORMAT2 = "FORMAT2"
private const val FORMAT3 = "FORMAT3"
private const val FORMAT3_OR_FORMAT2 = "FORMAT3|FORMAT2"
private const val FORMAT3_OR_FORMAT1 = "FORMAT3|FORMAT1"
}
fun getCredItems(
mobRegFormat: String = DEFAULT_REG_FORMAT,
credType: String,
accountEntity: LinkedAccountEntity,
isAadhaarConsentProvided : Boolean = false
isAadhaarConsentProvided: Boolean = false
) = when (credType) {
CRED_TYPE_SET_RESET_MPIN -> getCredItemsForRegistration(format = mobRegFormat, accountEntity = accountEntity,isAadhaarConsentProvided = isAadhaarConsentProvided)
CRED_TYPE_CHANGE_PIN -> getChangePinCredItems(accountEntity)
CRED_TYPE_SET_RESET_MPIN -> getCredItemsForRegistration(
format = mobRegFormat,
accountEntity = accountEntity,
isAadhaarConsentProvided = isAadhaarConsentProvided
)
CRED_TYPE_CHANGE_PIN -> getChangePinCredItems(accountEntity = accountEntity)
CRED_TYPE_UPI_LITE_REGISTRATION -> getUpiLiteRegistrationCredItems()
CRED_TYPE_UPI_LITE_LOAD_MONEY -> getUpiLiteLoadMoneyCredItems(accountEntity = accountEntity)
CRED_TYPE_UPI_LITE_SEND_MONEY -> getUpiLiteSendMoneyCredItems()
@@ -61,40 +82,46 @@ class CredItemsProvider {
)
}
return when (format.uppercase()) {
"FORMAT1" -> listOf(
FORMAT1 -> listOf(
CredItem(
type = "OTP", subtype = "SMS", dType = "NUM", dLength = accountEntity.otpLength
type = CREDTYPE_OTP,
subtype = CREDTYPE_SMS,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.otpLength
), CredItem(
type = "PIN",
subtype = "MPIN",
dType = "NUM",
type = CREDTYPE_PIN,
subtype = CREDTYPE_MPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.mPinLength
)
)
"FORMAT2" -> listOf(
FORMAT2 -> listOf(
CredItem(
type = "OTP", subtype = "SMS", dType = "NUM", dLength = accountEntity.otpLength
type = CREDTYPE_OTP,
subtype = CREDTYPE_SMS,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.otpLength
), CredItem(
type = "OTP",
subtype = "ATMPIN",
dType = "NUM",
type = CREDTYPE_OTP,
subtype = CREDTYPE_ATMPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.atmPinLength
), CredItem(
type = "PIN",
subtype = "MPIN",
dType = "NUM",
type = CREDTYPE_PIN,
subtype = CREDTYPE_MPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.mPinLength
)
)
"FORMAT3" -> getAadhaarOtpCredItems()
FORMAT3 -> getAadhaarOtpCredItems()
"FORMAT3|FORMAT2", "FORMAT3|FORMAT1" -> if (isAadhaarConsentProvided) {
FORMAT3_OR_FORMAT2, FORMAT3_OR_FORMAT1 -> if (isAadhaarConsentProvided) {
getAadhaarOtpCredItems()
} else {
val fallbackFormat = format.substringAfter("|")
val fallbackFormat = format.substringAfter(delimiter = PIPE)
getCredItemsForRegistration(
format = fallbackFormat,
accountEntity = accountEntity,
@@ -104,9 +131,9 @@ class CredItemsProvider {
else -> listOf(
CredItem(
type = "PIN",
subtype = "MPIN",
dType = "NUM",
type = CREDTYPE_PIN,
subtype = CREDTYPE_MPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.mPinLength
)
)
@@ -115,28 +142,57 @@ class CredItemsProvider {
private fun getChangePinCredItems(accountEntity: LinkedAccountEntity) = listOf(
CredItem(
type = "PIN", subtype = "MPIN", dType = "NUM", dLength = accountEntity.mPinLength
type = CREDTYPE_PIN,
subtype = CREDTYPE_MPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.mPinLength
), CredItem(
type = "PIN", subtype = "NMPIN", dType = "NUM", dLength = accountEntity.mPinLength
type = CREDTYPE_PIN,
subtype = CREDTYPE_NMPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.mPinLength
)
)
private fun getUpiLiteRegistrationCredItems() = listOf(
CredItem(type = "DEVICE", subtype = "IDENTITY", dType = "ALPH", dLength = "2048")
CredItem(
type = DEVICE,
subtype = CREDTYPE_IDENTITY,
dType = ALPH,
dLength = UPI_LITE_D_LENGTH
)
)
private fun getUpiLiteLoadMoneyCredItems(accountEntity: LinkedAccountEntity) = listOf(
CredItem(type = "ARQC", subtype = "SIGNATURE", dType = "ALPH", dLength = "2048"),
CredItem(type = "PIN", subtype = "MPIN", dType = "NUM", dLength = accountEntity.mPinLength)
CredItem(
type = ARQC,
subtype = CREDTYPE_SIGNATURE,
dType = ALPH,
dLength = UPI_LITE_D_LENGTH
),
CredItem(
type = CREDTYPE_PIN,
subtype = CREDTYPE_MPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.mPinLength
)
)
private fun getUpiLiteSendMoneyCredItems() = listOf(
CredItem(type = "ARQC", subtype = "SIGNATURE", dType = "ALPH", dLength = "2048")
CredItem(
type = ARQC,
subtype = CREDTYPE_SIGNATURE,
dType = ALPH,
dLength = UPI_LITE_D_LENGTH
)
)
private fun getOtherCredItems(accountEntity: LinkedAccountEntity) = listOf(
CredItem(
type = "PIN", subtype = "MPIN", dType = "NUM", dLength = accountEntity.mPinLength
type = CREDTYPE_PIN,
subtype = CREDTYPE_MPIN,
dType = CREDTYPE_DEBIT_NUM,
dLength = accountEntity.mPinLength
)
)
}

View File

@@ -23,7 +23,8 @@ const val AMOUNT_MAX_LENGTH_BEFORE_DECIMAL = 6
const val AMOUNT_MAX_LENGTH_AFTER_DECIMAL = 2
const val AMOUNT_MAX_LENGTH = AMOUNT_MAX_LENGTH_BEFORE_DECIMAL + AMOUNT_MAX_LENGTH_AFTER_DECIMAL + 1
const val AMOUNT_MAX_LENGTH_BEFORE_DECIMAL_RCC = 10
const val AMOUNT_MAX_LENGTH_RCC = AMOUNT_MAX_LENGTH_BEFORE_DECIMAL_RCC + AMOUNT_MAX_LENGTH_AFTER_DECIMAL + 1
const val AMOUNT_MAX_LENGTH_RCC =
AMOUNT_MAX_LENGTH_BEFORE_DECIMAL_RCC + AMOUNT_MAX_LENGTH_AFTER_DECIMAL + 1
// File names
const val NAVI_PAY_SECONDARY_SPLASH_LOTTIE = "navi-pay-secondary-splash.lottie"
@@ -152,6 +153,7 @@ const val RESOURCE_DEFAULT_ID = -1
const val RUPEE_SYMBOL = ""
const val TRANSITION_DURATION = 200
const val RUPEE_SYMBOL_CHAR = '₹'
const val PIPE = "|"
//Deeplink
const val FAQ_SCREEN_PATH = "menu/faq"
@@ -298,5 +300,7 @@ const val UPI_LITE_CREDBLOCK_INITIAL = "initial"
//Screen url
const val SET_RESET_PIN_SCREEN = "navipay/accountverify/setresetpin"
const val PROVIDE_AADHAAR_CONSENT_BOTTOMSHEET = "navipay/accountverify/setresertpin/aadhaarconsentbottomsheet"
const val SET_RESET_PIN_SCREEN_MODE_SELECTION_WITH_DEBIT_CARD_DEFAULT = "navipay/accountverify/setresetpin/modeSelectionWithDebitCardDefault"
const val PROVIDE_AADHAAR_CONSENT_BOTTOMSHEET =
"navipay/accountverify/setresertpin/aadhaarconsentbottomsheet"
const val SET_RESET_PIN_SCREEN_MODE_SELECTION_WITH_DEBIT_CARD_DEFAULT =
"navipay/accountverify/setresetpin/modeSelectionWithDebitCardDefault"