From daaaf32bec04462e6feaf6682ed03216891ccf36 Mon Sep 17 00:00:00 2001 From: Mohit Rajput Date: Mon, 8 Jul 2024 07:06:46 -0700 Subject: [PATCH] TP-68222 | t-store refactoring (#11744) --- .../bbps/common/utils/NaviBbpsDateUtils.kt | 14 ++----- .../paybill/util/TStoreOrderMapperUtil.kt | 22 ++++------ .../pay/common/utils/NaviPayCommonUtils.kt | 17 +++++--- .../list/usecase/SyncOrderHistoryUseCase.kt | 41 +------------------ .../tstore/list/util/OrderEntityMapperUtil.kt | 16 ++------ .../list/viewmodel/OrderHistoryViewModel.kt | 24 +++-------- 6 files changed, 32 insertions(+), 102 deletions(-) diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/utils/NaviBbpsDateUtils.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/utils/NaviBbpsDateUtils.kt index e9fcb7a125..fd914be6c9 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/utils/NaviBbpsDateUtils.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/utils/NaviBbpsDateUtils.kt @@ -29,15 +29,6 @@ class NaviBbpsDateUtils @Inject constructor() { } ?: return null } - fun getDateTimeObjectFromEpoch( - dateTime: String?, - timeZone: DateTimeZone = DateTimeZone.getDefault() - ): DateTime? { - dateTime?.toLongOrNull()?.let { - return DateTime(it).withZone(timeZone) - } ?: return null - } - fun getFormattedDate(utcDateString: String?, outputFormat: String): String { val dateTime = getDateTimeObjectFromDateTimeString( @@ -54,7 +45,10 @@ class NaviBbpsDateUtils @Inject constructor() { fun getFormattedDateFromEpoch(epochTime: String?, outputFormat: String): String { val dateTime = - getDateTimeObjectFromEpoch(dateTime = epochTime, timeZone = DateTimeZone.getDefault()) + DateUtils.getDateTimeObjectFromEpoch( + dateTime = epochTime, + timeZone = DateTimeZone.getDefault() + ) return dateTime?.let { DateUtils.getFormattedDateTimeAsStringFromDateTimeObject( dateTime = dateTime, diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/paybill/util/TStoreOrderMapperUtil.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/paybill/util/TStoreOrderMapperUtil.kt index 819d404d0e..91a71068b4 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/paybill/util/TStoreOrderMapperUtil.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/paybill/util/TStoreOrderMapperUtil.kt @@ -7,6 +7,7 @@ package com.navi.bbps.feature.paybill.util +import com.navi.base.utils.DateUtils import com.navi.bbps.common.utils.NaviBbpsDateUtils import com.navi.bbps.feature.billhistorydetail.model.view.BillTransactionItemEntity import com.navi.bbps.feature.category.model.view.BillCategoryEntity @@ -84,20 +85,13 @@ private fun getBBPSOrderDetailsMetadata( private fun getDateTimeObjectFromPaymentPayload(paymentResponseMetadata: JSONObject): DateTime? { val naviBbpsDateUtils = NaviBbpsDateUtils() - return if (!paymentResponseMetadata.optString("timestamp").isNullOrBlank()) { - try { - naviBbpsDateUtils.getDateTimeObjectFromDateTimeString( - dateTime = paymentResponseMetadata.optString("timestamp"), - timeZone = DateTimeZone.UTC - ) - } catch (e: Exception) { - naviBbpsDateUtils.getDateTimeObjectFromEpoch( - dateTime = System.currentTimeMillis().toString(), - timeZone = DateTimeZone.UTC - ) - } - } else { - naviBbpsDateUtils.getDateTimeObjectFromEpoch( + return try { + naviBbpsDateUtils.getDateTimeObjectFromDateTimeString( + dateTime = paymentResponseMetadata.getString("timestamp"), + timeZone = DateTimeZone.UTC + ) + } catch (e: Exception) { + DateUtils.getDateTimeObjectFromEpoch( dateTime = System.currentTimeMillis().toString(), timeZone = DateTimeZone.UTC ) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt index e6bb54df96..bcce31308a 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt @@ -310,12 +310,17 @@ object NaviPayCommonUtils { } fun getDateTimeObjectFromEpochString(epochMillis: Long): DateTime { - val dateTime = DateTime(epochMillis, DateTimeZone.UTC) - val dateTimeString = dateTime.toString() - return getDateTimeObjectFromDateTimeString( - dateTime = dateTimeString, - timeZone = DateTimeZone.UTC - ) ?: DateTime() + return try { + val dateTime = DateTime(epochMillis, DateTimeZone.UTC) + val dateTimeString = dateTime.toString() + return getDateTimeObjectFromDateTimeString( + dateTime = dateTimeString, + timeZone = DateTimeZone.UTC + ) ?: DateTime() + } catch (e: Exception) { + FirebaseCrashlytics.getInstance().recordException(e) + DateTime() + } } suspend fun validateSimInfo( diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/usecase/SyncOrderHistoryUseCase.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/usecase/SyncOrderHistoryUseCase.kt index a587662c0b..992df5cb85 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/usecase/SyncOrderHistoryUseCase.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/usecase/SyncOrderHistoryUseCase.kt @@ -16,7 +16,6 @@ import com.navi.pay.common.sync.repository.SyncRepository import com.navi.pay.onboarding.account.add.repository.BankRepository import com.navi.pay.tstore.details.ui.upi.NaviPayTransactionDetailsMetadata import com.navi.pay.tstore.list.model.network.OrderHistoryRequest -import com.navi.pay.tstore.list.model.network.OrderItem import com.navi.pay.tstore.list.model.network.toOrderEntity import com.navi.pay.tstore.list.repository.OrderRepository import com.navi.pay.utils.NAVI_PAY_SYNC_TABLE_ORDER_HISTORY_KEY @@ -24,7 +23,6 @@ import com.navi.pay.utils.parallelMap import java.util.concurrent.atomic.AtomicBoolean import javax.inject.Inject import javax.inject.Singleton -import kotlinx.coroutines.withContext @Singleton class SyncOrderHistoryUseCase @@ -65,11 +63,7 @@ constructor( break } - val orderHistoryItemList = - preprocessOrderHistoryList( - orderHistoryItemList = - orderHistoryAPIResponse.data?.orderItemList ?: emptyList() - ) + val orderHistoryItemList = orderHistoryAPIResponse.data?.orderItemList.orEmpty() val bankCodeList = orderHistoryItemList.flatMap { listOfNotNull(it.bankCode) }.distinct() @@ -112,37 +106,4 @@ constructor( } } } - - private suspend fun preprocessOrderHistoryList( - orderHistoryItemList: List - ): List { - - val filteredOrderHistoryListPostSelfTransfer = - filterOrderHistoryListForSelfTransferCase(orderHistoryItemList = orderHistoryItemList) - - val processedOrderHistoryList = - updateOrderHistoryDataForMandateCase( - orderHistoryItemList = filteredOrderHistoryListPostSelfTransfer - ) - - return processedOrderHistoryList - } - - private fun filterOrderHistoryListForSelfTransferCase( - orderHistoryItemList: List - ): List { - // for self transfer backend send both payer and payee transaction, so we are filtering out - // payee transaction - return orderHistoryItemList - } - - private suspend fun updateOrderHistoryDataForMandateCase( - orderHistoryItemList: List - ): List = - withContext(coroutineDispatcherProvider.io) { - // In case of mandate transaction, payerName is UMN in callback hence we manually update - // it - - return@withContext orderHistoryItemList - } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/util/OrderEntityMapperUtil.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/util/OrderEntityMapperUtil.kt index 495d9d6f5f..dd79555f42 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/util/OrderEntityMapperUtil.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/util/OrderEntityMapperUtil.kt @@ -63,14 +63,9 @@ fun OrderItem.getOrderCategoryTagsWithSeparator( OrderCategory.MERCHANT_DEBITED, OrderCategory.CUSTOMER_DEBITED_TO_MERCHANT, OrderCategory.CUSTOMER_CREDITED_FROM_MERCHANT - ) - ) { - eligibleTags.add(TransactionCategoryTags.MERCHANT_PAYMENTS.value) - } - - if ( - (naviPayMetadata?.payeeInfo?.mcc?.isNotBlank() == true && - naviPayMetadata.payeeInfo.mcc != NAVI_PAY_DEFAULT_MCC) || + ) || + (naviPayMetadata?.payeeInfo?.mcc?.isNotBlank() == true && + naviPayMetadata.payeeInfo.mcc != NAVI_PAY_DEFAULT_MCC) || (naviPayMetadata?.payerInfo?.mcc?.isNotBlank() == true && naviPayMetadata.payerInfo.mcc != NAVI_PAY_DEFAULT_MCC) ) { @@ -136,11 +131,6 @@ fun OrderItem.getPaymentModeTags( OrderPaymentMode.MANDATE_PRESENTATION -> { eligibleTags.add(TransactionPaymentModeTags.MANDATE.value) } - OrderPaymentMode.DEBIT_CARD, - OrderPaymentMode.UPI, - OrderPaymentMode.NETBANKING -> { - eligibleTags.add(TransactionPaymentModeTags.BANK_ACCOUNT.value) - } else -> { eligibleTags.add(TransactionPaymentModeTags.BANK_ACCOUNT.value) } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/viewmodel/OrderHistoryViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/viewmodel/OrderHistoryViewModel.kt index f37f7b38bb..9b41c1dd9a 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/viewmodel/OrderHistoryViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/viewmodel/OrderHistoryViewModel.kt @@ -87,9 +87,11 @@ constructor( private val rewardsNudgeEntityFetchUseCase: RewardsNudgeEntityFetchUseCase ) : NaviPayBaseVM(NaviPayVmData(screenName = NaviPayAnalytics.NAVI_PAY_ORDER_HISTORY)) { - private val SEARCH_QUERY_DEBOUNCE_TIME = 300.milliseconds - private val MONTH_FILTER_MAX_DURATION = 18 - private val DEFAULT_PAGE_SIZE = 10 + companion object { + private val SEARCH_QUERY_DEBOUNCE_TIME = 300.milliseconds + private const val MONTH_FILTER_MAX_DURATION = 18 + private const val DEFAULT_PAGE_SIZE = 10 + } val naviPayAnalytics = NaviPayAnalytics.INSTANCE.TStoreOrderList() @@ -669,22 +671,6 @@ constructor( private fun updateEnabledStateForTags( orderHistoryScreenBottomSheetUIState: OrderHistoryScreenBottomSheetUIState ) { - - // if ( - // !FirebaseRemoteConfigHelper.getBoolean( - // key = NAVI_PAY_TRANSACTION_HISTORY_DYNAMIC_FILTER_ENABLED, - // defaultValue = true - // ) - // ) { - // naviPayAnalytics.onDynamicFilterDisabledViaFireBase() - // return - // } - // - // if (tagEnablingStateJob?.isActive == true) { - // naviPayAnalytics.onTagEnablingStateJobRunning() - // return - // } - tagEnablingStateJob = viewModelScope.launch(Dispatchers.IO) { when (orderHistoryScreenBottomSheetUIState) {