TP-67819 | polling timeout screen (#11156)
This commit is contained in:
@@ -470,10 +470,7 @@ class OrderStatusFragment :
|
||||
apiPollScheduler?.stopApiPoll()
|
||||
when (type) {
|
||||
TURBO_CHECKOUT_FLOW -> {
|
||||
viewModel.triggerPreloadIfRequired(
|
||||
null,
|
||||
AmcTaskManager.PAYMENT_SUCCESS_PREFETCH_TASK
|
||||
)
|
||||
viewModel.fetchPaymentOrderPollingScreenTimeOutData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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 = "₹"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user