TP-67819 | polling timeout screen (#11156)

This commit is contained in:
Apoorv Nigam
2024-06-04 22:57:08 +05:30
committed by GitHub
parent 1d10ee4670
commit 76504504ec
4 changed files with 73 additions and 26 deletions

View File

@@ -470,10 +470,7 @@ class OrderStatusFragment :
apiPollScheduler?.stopApiPoll()
when (type) {
TURBO_CHECKOUT_FLOW -> {
viewModel.triggerPreloadIfRequired(
null,
AmcTaskManager.PAYMENT_SUCCESS_PREFETCH_TASK
)
viewModel.fetchPaymentOrderPollingScreenTimeOutData()
}
}
}

View File

@@ -20,6 +20,7 @@ import com.navi.amc.common.taskProcessor.AmcTaskManager
import com.navi.amc.fundbuy.models.PaymentOrder
import com.navi.amc.utils.AmcAnalytics
import com.navi.amc.utils.Constant.REFRESH_ORDER
import com.navi.amc.utils.Constant.RUPEE_SYMBOL
import com.navi.amc.utils.Constant.TURBO_CHECKOUT_FLOW
import com.navi.amc.utils.getJsonObject
import com.navi.amc.utils.updateCheckerResponse
@@ -69,7 +70,9 @@ class OrderStatusViewModel @Inject constructor(private val repository: OrderStat
var isBackAllowed: Boolean = true
var sourceScreen: String? = null
var orderHeaderTitle: String? = null
var orderAmount: String? = null
private var orderAmount: String? = null
private var fundId: String? = null
private var fundName: String? = null
fun fetchPaymentOrderPollingScreenData(
fundName: String,
@@ -77,10 +80,21 @@ class OrderStatusViewModel @Inject constructor(private val repository: OrderStat
orderAmount: String,
paymentTimeStamp: String
) {
setFundData(fundName, fundId, orderAmount)
_orderStatusScreenData.value =
getPollingScreenData(fundName, fundId, orderAmount, paymentTimeStamp)
}
private fun setFundData(fundName: String, fundId: String, orderAmount: String) {
this.fundName = fundName
this.fundId = fundId
this.orderAmount = orderAmount
}
fun fetchPaymentOrderPollingScreenTimeOutData() {
_orderStatusScreenData.value = getOrderPollingTimeOutScreenData()
}
fun fetchScreenData(orderId: String, dataSource: String, extraParams: Map<String, String>?) {
viewModelScope.launch {
val response =
@@ -195,6 +209,55 @@ class OrderStatusViewModel @Inject constructor(private val repository: OrderStat
_csatResponse.value = null
}
private fun getOrderPollingTimeOutScreenData(): OrderStatusScreenData? {
val jsonString: String =
FirebaseRemoteConfigHelper.getString(
FirebaseRemoteConfigHelper.AMC_ORDER_STATUS_POLLING_SCREEN_TIMEOUT_UI_DATA
)
val screenData =
getJsonObject<OrderStatusScreenData>(
type = object : TypeToken<OrderStatusScreenData>() {}.type,
jsonString = jsonString
)
var orderStatusScreenData: OrderStatusScreenData? = null
screenData?.let {
val fundHeaderTitle = it.content?.amcHeaderData?.title?.copy(text = fundName)
val orderAmountData =
it.content
?.orderDetails
?.orderAmount
?.subtitle
?.copy(text = "${RUPEE_SYMBOL}$orderAmount")
orderStatusScreenData =
it.copy(
content =
it.content?.copy(
amcHeaderData =
it.content.amcHeaderData?.copy(
title = fundHeaderTitle,
icon =
it.content.amcHeaderData.icon?.copy(
actionData =
getFundHeaderIconActionData(
fundId.orEmpty(),
it.content.amcHeaderData.icon.actionData
)
)
),
orderDetails =
it.content.orderDetails?.copy(
orderAmount =
it.content.orderDetails.orderAmount?.copy(
subtitle = orderAmountData
)
)
)
)
}
return orderStatusScreenData
}
private fun getPollingScreenData(
fundName: String,
fundId: String,
@@ -213,28 +276,12 @@ class OrderStatusViewModel @Inject constructor(private val repository: OrderStat
var orderStatusScreenData: OrderStatusScreenData? = null
screenData?.let {
val fundHeaderTitle = it.content?.amcHeaderData?.title?.copy(text = fundName)
val fundHeaderIconClickEventData =
it.content
?.amcHeaderData
?.icon
?.actionData
?.metaData
?.clickedData
?.copy(parameters = hashMapOf("fund_id" to fundId))
val fundHeaderIconActionData =
it.content
?.amcHeaderData
?.icon
?.actionData
?.copy(
parameters = listOf(LineItem(key = "isin", value = fundId)),
metaData =
it.content.amcHeaderData.icon.actionData.metaData?.copy(
clickedData = fundHeaderIconClickEventData
)
)
val orderAmountData =
it.content?.orderDetails?.orderAmount?.subtitle?.copy(text = "\u20B9$orderAmount")
it.content
?.orderDetails
?.orderAmount
?.subtitle
?.copy(text = "${RUPEE_SYMBOL}$orderAmount")
orderStatusScreenData =
it.copy(

View File

@@ -189,4 +189,5 @@ object Constant {
const val ORDER_HEADER_TITLE = "orderHeaderTitle"
const val PAYMENT_TIMESTAMP = "paymentTimeStamp"
const val FUND_ID = "fundId"
const val RUPEE_SYMBOL = ""
}

View File

@@ -61,6 +61,8 @@ object FirebaseRemoteConfigHelper {
"NAVI_UPI_NOT_RESET_CL_SERVICE_ON_DISCONNECT"
const val AMC_CSAT_TIMER_DELAY_IN_SEC = "AMC_CSAT_TIMER_DELAY_IN_SEC"
const val AMC_ORDER_STATUS_POLLING_SCREEN_UI_DATA = "AMC_ORDER_STATUS_POLLING_SCREEN_UI_DATA"
const val AMC_ORDER_STATUS_POLLING_SCREEN_TIMEOUT_UI_DATA =
"AMC_ORDER_STATUS_POLLING_SCREEN_TIMEOUT_UI_DATA"
const val AMC_CREATING_SIP_POLLING_SCREEN_UI_DATA = "AMC_CREATING_SIP_POLLING_SCREEN_UI_DATA"
const val PROFILE_CACHING_DISABLE = "PROFILE_CACHING_DISABLE"
const val BROTLI_ENCODING_ENABLED = "BROTLI_ENCODING_ENABLED"