TP-61394 | parse error fix and multiple payment error fix (#10166)
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user