TP-61394 | parse error fix and multiple payment error fix (#10166)

This commit is contained in:
Hardik Chaudhary
2024-03-21 15:41:57 +05:30
committed by GitHub
parent 4b81cd1be3
commit 0679334d6e
5 changed files with 44 additions and 13 deletions

View File

@@ -346,14 +346,18 @@ object NaviPayCommonUtils {
dateTime: String?,
timeZone: DateTimeZone = DateTimeZone.getDefault()
): DateTime? {
dateTime?.let {
if (it.contains(other = Z) || it.contains(other = PLUS)) {
return DateTime.parse(it).withZone(timeZone)
} else {
val updatedDateTime = "${it}Z"
return DateTime.parse(updatedDateTime).withZone(timeZone)
}
} ?: return null
try {
dateTime?.let {
if (it.contains(other = Z) || it.contains(other = PLUS)) {
return DateTime.parse(it).withZone(timeZone)
} else {
val updatedDateTime = "${it}Z"
return DateTime.parse(updatedDateTime).withZone(timeZone)
}
} ?: return DateTime.now()
} catch (e: Exception) {
return DateTime.now()
}
}
suspend fun validateSimInfo(

View File

@@ -24,6 +24,7 @@ import androidx.navigation.NavHostController
import com.navi.base.deeplink.DeepLinkManager
import com.navi.base.deeplink.util.DeeplinkConstants
import com.navi.base.model.CtaData
import com.navi.base.utils.orFalse
import com.navi.common.model.ModuleNameV2
import com.navi.common.ui.activity.BaseActivity
import com.navi.pay.R
@@ -41,6 +42,7 @@ import com.navi.pay.onboarding.binding.ui.NaviPayOnboardingActivity
import com.navi.pay.permission.model.view.PermissionState
import com.navi.pay.permission.utils.PermissionKeys
import com.navi.pay.utils.GenericErrorCtaHandler
import com.navi.pay.utils.IS_ACTIVITY_RECREATED
import com.navi.pay.utils.NEEDS_RESULT
import com.navi.pay.utils.SOURCE_MODULE
import dagger.hilt.android.AndroidEntryPoint
@@ -78,6 +80,7 @@ class NaviPayActivity : BaseActivity() {
@Inject lateinit var genericErrorCtaHandler: GenericErrorCtaHandler
private var isErrorSheetVisible = false
var isActivityRecreated = false
private var isErrorSheetCancellable = true
private val onboardingResultHandler by lazy { OnboardingResultHandler(this) }
@@ -89,6 +92,7 @@ class NaviPayActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
isActivityRecreated = savedInstanceState?.getBoolean(IS_ACTIVITY_RECREATED).orFalse()
initFromIntent(intent)
val naviPayAccessEligibility = NaviPayCommonUtils.getNaviPayAccessEligibility(this)
@@ -225,6 +229,11 @@ class NaviPayActivity : BaseActivity() {
super.finish()
}
override fun onSaveInstanceState(outState: Bundle) {
outState.putBoolean(IS_ACTIVITY_RECREATED, true)
super.onSaveInstanceState(outState)
}
override fun onDestroy() {
super.onDestroy()
NaviPayEventBus.resetEventBus()

View File

@@ -146,7 +146,10 @@ fun SendMoneyScreen(
val selectedBankAccountId =
sendMoneyViewModel.getSelectedBankAccountId(naviPayActivity.intent.extras)
sendMoneyViewModel.setMetadataForTransaction(naviPayActivity.intent.extras)
sendMoneyViewModel.validateVpa(selectedBankAccountId)
sendMoneyViewModel.validateVpa(
selectedBankAccountId = selectedBankAccountId,
isActivityRecreated = naviPayActivity.isActivityRecreated
)
naviPayAnalytics.onSendMoneyLanded(
source = sendMoneyScreenSource,
transactionType = transactionType,

View File

@@ -663,7 +663,10 @@ constructor(
accountReferenceId = trimmedBUID
)
private fun fetchLinkedBankAccounts(selectedBankAccountId: String? = null) {
private fun fetchLinkedBankAccounts(
selectedBankAccountId: String? = null,
isActivityRecreated: Boolean = false
) {
_bankAccountsState.update { BankAccountsState.Loading }
viewModelScope.launch(coroutineDispatcherProvider.io) {
if (!naviPayNetworkConnectivity.isInternetConnected()) {
@@ -724,7 +727,15 @@ constructor(
selectedBankAccountId = selectedBankAccountId.orEmpty()
)
}
startPayment(payButtonSource = PMS)
if (isActivityRecreated) {
_finishWithResult.update {
SendMoneyScreenState.PaymentResultWithData(
errorConfig = NaviPayCommonUtils.getBackPressErrorConfig()
)
}
} else {
startPayment(payButtonSource = PMS)
}
return@launch
} else if (_selectedBankAccount.value == null) {
// If no account was selected, put default selection logic
@@ -1352,7 +1363,7 @@ constructor(
_mainCtaState.update { mainCtaState }
}
fun validateVpa(selectedBankAccountId: String?) {
fun validateVpa(selectedBankAccountId: String?, isActivityRecreated: Boolean) {
viewModelScope.launch(coroutineDispatcherProvider.io) {
naviPayAnalytics.onPayeeVpaCheck(
source = source,
@@ -1373,7 +1384,10 @@ constructor(
} else {
_shouldAutoFocusOnAmount.emit(true)
}
fetchLinkedBankAccounts(selectedBankAccountId = selectedBankAccountId)
fetchLinkedBankAccounts(
selectedBankAccountId = selectedBankAccountId,
isActivityRecreated = isActivityRecreated
)
return@launch
}

View File

@@ -17,6 +17,7 @@ const val FREQUENT_TRANSACTIONS_IN_DB_REFRESH_MIN_TIMESTAMP = 86400000L // 1 day
const val PHONE_NUMBER_LENGTH = 10
const val ZERO_STRING = "0"
const val IS_FROM_IAN = "IS_FROM_IAN"
const val IS_ACTIVITY_RECREATED = "isActivityRecreated"
// Send & Request money constants
const val NOTE_MAX_LENGTH = 50