TP-58762 | tracker widget list rendering changes (#10273)
Co-authored-by: Sanjay P <sanjay.p@navi.com>
This commit is contained in:
@@ -9,6 +9,7 @@ package com.navi.ap.common.models.customwidget
|
||||
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.navi.ap.common.models.lambdamodels.response.KYCItemData
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.model.ui.CardProperty
|
||||
import com.navi.uitron.model.ui.ColumnProperty
|
||||
@@ -16,16 +17,16 @@ import com.navi.uitron.model.ui.DividerProperty
|
||||
import com.navi.uitron.model.ui.UiTronView
|
||||
|
||||
data class StepTrackerWidgetData(
|
||||
val trackerData: Map<String, Map<String, StepTrackerData>>? = null,
|
||||
val trackerData: Map<String, Map<String, Map<String, StepTrackerData>>>? = null,
|
||||
val dividerProperty: DividerProperty? = null,
|
||||
val cardProperty: CardProperty? = null,
|
||||
val columnProperty: ColumnProperty? = null,
|
||||
val shimmerView: List<UiTronView>? = null,
|
||||
val lambdaResponse: Any? = null
|
||||
) : UiTronData() {
|
||||
private var _trackerList: List<StepTrackerInfo>? = null
|
||||
private var _trackerList: List<KYCItemData>? = null
|
||||
|
||||
val trackerList: List<StepTrackerInfo>?
|
||||
val trackerList: List<KYCItemData>?
|
||||
get() {
|
||||
if (_trackerList == null) {
|
||||
_trackerList = this.getWidgetDataList(lambdaResponse)
|
||||
|
||||
@@ -10,13 +10,19 @@ package com.navi.ap.common.viewmodel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.navi.ap.common.models.WidgetModelDefinition
|
||||
import com.navi.ap.common.models.customwidget.StepTrackerData
|
||||
import com.navi.ap.common.models.customwidget.StepTrackerWidgetData
|
||||
import com.navi.ap.common.models.lambdamodels.response.KYCItemData
|
||||
import com.navi.ap.utils.appendIndexToDataKeys
|
||||
import com.navi.ap.utils.appendIndexToWidget
|
||||
import com.navi.ap.utils.constants.TWO
|
||||
import com.navi.ap.utils.constants.WIDGET_DATA
|
||||
import com.navi.ap.utils.constants.ZERO
|
||||
import com.navi.ap.utils.getGsonBuilders
|
||||
import com.navi.ap.utils.injector.PathInjector
|
||||
import com.navi.ap.utils.toJson
|
||||
import com.navi.base.utils.EMPTY
|
||||
import com.navi.base.utils.orZero
|
||||
import com.navi.common.viewmodel.BaseVM
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
@@ -72,13 +78,7 @@ class StepTrackerWidgetVM @Inject constructor() : BaseVM() {
|
||||
widgetType
|
||||
)
|
||||
val updatedResponse =
|
||||
stepTrackerWidgetData.trackerData
|
||||
?.get(listItem.type)
|
||||
?.get(listItem.status)
|
||||
?.let {
|
||||
PathInjector<WidgetModelDefinition<UiTronResponse>, Any?>()
|
||||
.injectData(modifiedWidget, it)
|
||||
} ?: modifiedWidget
|
||||
getUpdatedResponse(listItem, stepTrackerWidgetData, modifiedWidget)
|
||||
updatedResponse.widgetStates?.forEach {
|
||||
if (it.stateId.isNullOrEmpty()) return@forEach
|
||||
handle[it.stateId] = it.actionData
|
||||
@@ -91,4 +91,36 @@ class StepTrackerWidgetVM @Inject constructor() : BaseVM() {
|
||||
widgetListState.clear()
|
||||
widgetListState += updatedWidgetList ?: emptyList()
|
||||
}
|
||||
|
||||
private suspend fun getUpdatedResponse(
|
||||
listItem: KYCItemData,
|
||||
stepTrackerWidgetData: StepTrackerWidgetData? = null,
|
||||
modifiedWidget: WidgetModelDefinition<UiTronResponse>
|
||||
): WidgetModelDefinition<UiTronResponse> {
|
||||
return stepTrackerWidgetData
|
||||
?.trackerData
|
||||
?.get(listItem.type)
|
||||
?.let { getSourceItem(listItem, it) }
|
||||
?.let {
|
||||
PathInjector<WidgetModelDefinition<UiTronResponse>, Any?>()
|
||||
.injectData(modifiedWidget, it)
|
||||
} ?: modifiedWidget
|
||||
}
|
||||
|
||||
private fun getSourceItem(
|
||||
listItem: KYCItemData,
|
||||
it: Map<String, Map<String, StepTrackerData>>
|
||||
): StepTrackerData? {
|
||||
val sdkItem =
|
||||
if (listItem.sourceList?.size.orZero() < TWO) {
|
||||
it.getOrElse(
|
||||
listItem.sourceList?.getOrNull(ZERO)?.sdkInOrder?.getOrNull(ZERO).orEmpty()
|
||||
) {
|
||||
it.values.first()
|
||||
}
|
||||
} else {
|
||||
it[EMPTY]
|
||||
}
|
||||
return sdkItem?.get(listItem.status.orEmpty())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,8 +86,10 @@ const val SELECTED_DATE_WITH_SUFFIX = "selectedDateWithSuffix"
|
||||
const val SELECTED_FORMATTED_DATE = "selectedFormattedDate"
|
||||
const val SHOW = "show"
|
||||
const val INVALID_PIN_CODE = "INVALID_PIN_CODE"
|
||||
const val ZERO = 0
|
||||
const val KEY_PAYMENT_SDK_VERSION = "KEY_PAYMENT_SDK_VERSION"
|
||||
const val KEY_PAYMENT_GATEWAY_EVENT_NAME = "paymentGatewayEventName"
|
||||
const val PAYMENT_DOT_GATEWAY_DOT = "payments.gateway."
|
||||
const val DOT_SDK_DOT = ".sdk."
|
||||
const val RUPEE_SYMBOL = "₹"
|
||||
const val TWO = 2
|
||||
|
||||
Reference in New Issue
Block a user