NTP-60702 | Conditional Transaction history Sync (#16442)
This commit is contained in:
committed by
GitHub
parent
6e3d34b745
commit
9c8e848eac
@@ -69,6 +69,14 @@ fun String?.toLongWithSafe(): Long {
|
||||
}
|
||||
}
|
||||
|
||||
fun String?.toBooleanWithSafe(): Boolean {
|
||||
return try {
|
||||
this?.toBoolean().orFalse()
|
||||
} catch (_: Exception) {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
fun TextView.underLineText() {
|
||||
paint.flags = paint.flags or Paint.UNDERLINE_TEXT_FLAG
|
||||
paint.isAntiAlias = true
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.navi.base.cache.model.NaviCacheEntity
|
||||
import com.navi.base.cache.repository.NaviCacheRepository
|
||||
import com.navi.base.utils.BaseUtils.getPhoneNumberWithNinetyOneCode
|
||||
import com.navi.base.utils.FirestoreDataProvider
|
||||
import com.navi.base.utils.toBooleanWithSafe
|
||||
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper
|
||||
import com.navi.common.model.AppUpgradeResponse
|
||||
import com.navi.common.upi.WITHOUT_ONBOARDING_FLOW
|
||||
@@ -51,11 +52,14 @@ import com.navi.pay.management.chat.util.SyncMessagesUseCase
|
||||
import com.navi.pay.management.upinumber.list.model.view.toUpiNumberEntity
|
||||
import com.navi.pay.management.upinumber.list.repository.UpiNumberRepository
|
||||
import com.navi.pay.network.di.NaviPayGsonBuilder
|
||||
import com.navi.pay.tstore.list.usecase.SyncOrderHistoryUseCase
|
||||
import com.navi.pay.utils.DEFAULT_CONFIG
|
||||
import com.navi.pay.utils.FIRESTORE_CUSTOMER_DATA_COLLECTION_PATH
|
||||
import com.navi.pay.utils.FIRESTORE_PSP_ROUTING_BUCKETS_COLLECTION_PATH
|
||||
import com.navi.pay.utils.IS_TRANSACTION_HISTORY_SYNCED_ONCE
|
||||
import com.navi.pay.utils.NAVI_PAY_LITMUS_EXPERIMENTS
|
||||
import com.navi.pay.utils.NAVI_PAY_PSP_ROUTING_BUCKETS_KEY
|
||||
import com.navi.pay.utils.TRUE
|
||||
import com.navi.payments.shared.feature.arc.usecase.ArcNudgeSyncUseCase
|
||||
import com.ramcosta.composedestinations.spec.Route
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
@@ -95,6 +99,7 @@ constructor(
|
||||
private val syncConversationsUseCase: SyncConversationsUseCase,
|
||||
private val syncMessagesUseCase: SyncMessagesUseCase,
|
||||
private val naviPayConfigUseCase: NaviPayConfigUseCase,
|
||||
private val syncOrderHistoryUseCase: SyncOrderHistoryUseCase,
|
||||
) : NaviPayBaseVM() {
|
||||
|
||||
private val naviPayAnalytics: NaviPayAnalytics.NaviPayViewModel =
|
||||
@@ -150,7 +155,6 @@ constructor(
|
||||
naviPayAnalytics.onNaviPayViewModelInit()
|
||||
|
||||
updateNaviPayDefaultConfig()
|
||||
|
||||
launch { performMinimumAllowedVersionForNaviPayAccessCheck() }
|
||||
|
||||
launch { refreshBankListUseCase.execute(screenName = screenName) }
|
||||
@@ -195,6 +199,22 @@ constructor(
|
||||
initUpiLiteSync() // Onboarding check is not required here
|
||||
|
||||
launch { darkKnightScheduler.schedulePeriodicSync() }
|
||||
launch { syncTransactionHistory() }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sync transaction history only when user enters UPI flow for the first time or after logout
|
||||
* and login. After that, it will not sync again.
|
||||
*/
|
||||
private suspend fun syncTransactionHistory() {
|
||||
val syncStatus = naviCacheRepository.get(key = IS_TRANSACTION_HISTORY_SYNCED_ONCE)?.value
|
||||
val isAlreadySynced = syncStatus.toBooleanWithSafe()
|
||||
if (!isAlreadySynced) {
|
||||
syncOrderHistoryUseCase.execute(screenName)
|
||||
naviCacheRepository.save(
|
||||
NaviCacheEntity(key = IS_TRANSACTION_HISTORY_SYNCED_ONCE, value = TRUE, version = 1)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -642,3 +642,8 @@ const val LRN_MISMATCH_ERROR = "lrn_mismatch_error"
|
||||
const val ERR_ACTIVE_LITE_ACCOUNT_FOUND = "ERR_ACTIVE_LITE_ACCOUNT_FOUND"
|
||||
const val ERR_MANDATE_PRESENT = "ERR_MANDATE_PRESENT"
|
||||
const val ERR_LITE_AND_MANDATE_ACTIVE = "ERR_LITE_AND_MANDATE_ACTIVE"
|
||||
|
||||
// t-store sync
|
||||
const val IS_TRANSACTION_HISTORY_SYNCED_ONCE = "isTransactionHistorySyncedOnce"
|
||||
|
||||
const val TRUE = "true"
|
||||
|
||||
Reference in New Issue
Block a user