NTP-60702 | Conditional Transaction history Sync (#16442)

This commit is contained in:
Balrambhai Sharma
2025-06-04 21:25:42 +05:30
committed by GitHub
parent 6e3d34b745
commit 9c8e848eac
3 changed files with 34 additions and 1 deletions

View File

@@ -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

View File

@@ -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)
)
}
}

View File

@@ -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"