TP-41350 | Caching of onboarding config in DB (#7857)

Co-authored-by: shaurya-rehan <shaurya.rehan@navi.com>
This commit is contained in:
Ujjwal Kumar
2023-09-11 22:52:13 +05:30
committed by GitHub
parent 31a8ced6c1
commit c8d1e61bf3
3 changed files with 4 additions and 19 deletions

View File

@@ -16,7 +16,6 @@ import com.navi.pay.common.usecase.NaviPayConfigUseCase
import com.navi.pay.common.utils.DeviceInfoProvider
import com.navi.pay.onboarding.binding.model.network.CustomerRequest
import com.navi.pay.onboarding.binding.model.network.CustomerResponse
import com.navi.pay.onboarding.binding.model.network.NaviPayOnboardingConfig
import com.navi.pay.utils.ConfigKey
import com.navi.pay.utils.KEY_IS_FIRST_TRANSACTION_SUCCESSFUL
import com.navi.pay.utils.NAVI_PAY_ENCRYPT_SHARED_PREF_DATA_KEYS
@@ -35,7 +34,6 @@ class NaviPaySetupUseCase @Inject constructor(
) {
private lateinit var configJob: Deferred<NaviPayDefaultConfig>
private lateinit var onboardingConfig: Deferred<NaviPayOnboardingConfig>
private lateinit var getCustomerJob: Deferred<RepoResult<CustomerResponse>>
private val naviPayAnalytics: NaviPayAnalytics.SetupUseCaseEvents =
NaviPayAnalytics.INSTANCE.SetupUseCaseEvents()
@@ -147,7 +145,6 @@ class NaviPaySetupUseCase @Inject constructor(
if (customerResponse?.customerStatus == NaviPayCustomerStatus.LINKED_VPA.name) {
NaviPaySetupStatus.Success(customerStatus = NaviPayCustomerStatus.LINKED_VPA.name)
} else {
loadOnboardingConfig()
NaviPaySetupStatus.Success(customerStatus = customerResponse?.customerStatus.orEmpty())
}
}
@@ -156,7 +153,6 @@ class NaviPaySetupUseCase @Inject constructor(
private suspend fun onLocalDataInvalid(): NaviPaySetupStatus {
return withContext(Dispatchers.IO) {
clearNaviPayData()
loadOnboardingConfig()
NaviPaySetupStatus.Failure(NaviPaySetupFailureReason.LocalDataInvalid)
}
}
@@ -167,16 +163,4 @@ class NaviPaySetupUseCase @Inject constructor(
nonEncryptedDataKeys = NAVI_PAY_NON_ENCRYPT_SHARED_PREF_DATA_KEYS
)
}
private suspend fun loadOnboardingConfig() {
withContext(Dispatchers.IO) {
onboardingConfig = async {
naviPayConfigUseCase.execute<NaviPayOnboardingConfig>(
ConfigKey.ONBOARDING,
object : TypeToken<NaviPayOnboardingConfig>() {}.type
) ?: NaviPayOnboardingConfig()
}
onboardingConfig.await()
}
}
}

View File

@@ -32,7 +32,7 @@ class RefreshConfigUseCase @Inject constructor(
if (DateTime.now().millis - configDBLastRefreshTimeStamp > CONFIG_IN_DB_REFRESH_MIN_TIMESTAMP) {
val configAPIResponse =
commonRepository.getConfig(commaSeparatedConfigKeys = "${ConfigKey.DEFAULT_CONFIG},${ConfigKey.NPCI_CONFIG},${ConfigKey.UPI_MAPPER}")
commonRepository.getConfig(commaSeparatedConfigKeys = "${ConfigKey.DEFAULT_CONFIG},${ConfigKey.NPCI_CONFIG},${ConfigKey.UPI_MAPPER},${ConfigKey.ONBOARDING}")
if (!configAPIResponse.isSuccessWithData()) {
return
@@ -46,7 +46,8 @@ class RefreshConfigUseCase @Inject constructor(
configKeys = listOf(
ConfigKey.DEFAULT_CONFIG,
ConfigKey.NPCI_CONFIG,
ConfigKey.UPI_MAPPER
ConfigKey.UPI_MAPPER,
ConfigKey.ONBOARDING
)
)

View File

@@ -470,7 +470,7 @@
<string name="autopay_of_upto_x">Autopay of up to ₹%s</string>
<string name="for_x">For %s</string>
<string name="autopay_setup_status">Autopay setup status</string>
<string name="couldnt_find_this_bank">Couldnt not find this bank.</string>
<string name="couldnt_find_this_bank">Couldnt find this bank.</string>
<string name="deregister">Deregister</string>
<string name="deregistering_from_navi_pay">Deregistering from Navi UPI</string>
<string name="deregister_from_navi_pay_title">Deregister from Navi UPI?</string>