TP-70970 | Add support for showing ads in Uitron based screens (#11796)
This commit is contained in:
committed by
GitHub
parent
948b9cf7ad
commit
1cd70cb9a0
@@ -9,7 +9,7 @@ package com.naviapp.common.deserializer
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.naviwidgets.CustomWidgetUiTronDataDeserializer
|
||||
import com.navi.common.uitron.deserializer.CustomWidgetUiTronDataDeserializer
|
||||
import com.navi.naviwidgets.utils.VIEW_TYPE
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.naviapp.home.compose.model.ProfileHeaderWidgetData
|
||||
|
||||
@@ -9,13 +9,13 @@ package com.naviapp.common.serializer
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.navi.common.uitron.serializer.CommonUiTronDataSerializer
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.serializer.UiTronDataSerializer
|
||||
import com.naviapp.home.compose.model.ProfileHeaderWidgetData
|
||||
import com.naviapp.home.model.HomeScreenCustomWidgetType
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class CustomHomeWidgetDataSerializer : UiTronDataSerializer() {
|
||||
class CustomHomeWidgetDataSerializer : CommonUiTronDataSerializer() {
|
||||
override fun serialize(
|
||||
src: UiTronData?,
|
||||
typeOfSrc: Type?,
|
||||
|
||||
@@ -54,6 +54,7 @@ import com.navi.common.listeners.NewBottomSheetListener
|
||||
import com.navi.common.react.ReactPreLoadHeadLessActivity
|
||||
import com.navi.common.ui.errorview.FullScreenErrorComposeView
|
||||
import com.navi.common.ui.fragment.BaseFragment
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.insurance.R
|
||||
import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator
|
||||
@@ -216,7 +217,11 @@ class InsuranceTabFragment(private val lazyListState: () -> LazyListState? = { n
|
||||
state.data?.listOfUiTronWidgets?.getOrNull(index)
|
||||
|
||||
Column(modifier = Modifier.wrapContentSize()) {
|
||||
UiTronRenderer(uiTronResponse?.data, viewModel)
|
||||
UiTronRenderer(
|
||||
uiTronResponse?.data,
|
||||
viewModel,
|
||||
CommonCustomUiTronRenderer()
|
||||
)
|
||||
.Render(
|
||||
composeViews =
|
||||
uiTronResponse?.parentComposeView.orEmpty()
|
||||
|
||||
@@ -10,6 +10,7 @@ package com.naviapp.forge.widgetfactory
|
||||
import androidx.compose.runtime.Composable
|
||||
import com.navi.common.forge.model.ForgeWidgetModelDefinition
|
||||
import com.navi.common.forge.model.ForgeWidgetTypes
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
import com.navi.uitron.viewmodel.UiTronViewModel
|
||||
@@ -21,7 +22,7 @@ fun ForgeWidgetRenderer(
|
||||
) {
|
||||
return when (widget?.widgetType) {
|
||||
ForgeWidgetTypes.UI_TRON_WIDGET.type -> {
|
||||
UiTronRenderer(widget.widgetData?.data, viewModel)
|
||||
UiTronRenderer(widget.widgetData?.data, viewModel, CommonCustomUiTronRenderer())
|
||||
.Render(composeViews = widget.widgetData?.parentComposeView.orEmpty())
|
||||
}
|
||||
else -> Unit
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * Copyright © 2023-2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
@@ -8,6 +8,7 @@
|
||||
package com.naviapp.forge.widgetfactory
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
import com.naviapp.forge.model.WidgetModelDefinition
|
||||
@@ -22,6 +23,7 @@ fun WidgetRenderer(widget: WidgetModelDefinition<UiTronResponse>?, viewModel: Fo
|
||||
UiTronRenderer(
|
||||
dataMap = widget.widgetData?.data,
|
||||
uiTronViewModel = viewModel,
|
||||
customUiTronRenderer = CommonCustomUiTronRenderer()
|
||||
)
|
||||
.Render(composeViews = widget.widgetData?.parentComposeView.orEmpty())
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.airbnb.lottie.compose.LottieAnimation
|
||||
import com.airbnb.lottie.compose.LottieCompositionSpec
|
||||
import com.airbnb.lottie.compose.LottieConstants
|
||||
import com.airbnb.lottie.compose.rememberLottieComposition
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.naviwidgets.R
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
import com.naviapp.home.model.WidgetUiState
|
||||
@@ -216,7 +217,11 @@ private fun RenderUiTronContent(elementList: List<WidgetId>, homeVM: HomeVM) {
|
||||
}
|
||||
AnimatedContainerForWidgets(isVisible = visible) {
|
||||
val response = homeVM.getWidgetUiStateMap()[element]?.widgetData
|
||||
UiTronRenderer(dataMap = response?.data, uiTronViewModel = homeVM)
|
||||
UiTronRenderer(
|
||||
dataMap = response?.data,
|
||||
uiTronViewModel = homeVM,
|
||||
customUiTronRenderer = CommonCustomUiTronRenderer()
|
||||
)
|
||||
.Render(composeViews = response?.parentComposeView.orEmpty())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ package com.naviapp.home.compose.profile
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.runtime.Composable
|
||||
import com.navi.common.ui.compose.DrawerState
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.pay.common.settingscreen.ui.UPISettingSDK
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
@@ -31,6 +32,7 @@ fun ProfileScreenWidgetRenderer(
|
||||
UiTronRenderer(
|
||||
dataMap = widget.widgetData?.data,
|
||||
uiTronViewModel = viewModel,
|
||||
customUiTronRenderer = CommonCustomUiTronRenderer()
|
||||
)
|
||||
.Render(composeViews = widget.widgetData?.parentComposeView.orEmpty())
|
||||
}
|
||||
|
||||
@@ -9,14 +9,14 @@ package com.naviapp.home.compose.uiTron.model.deserializer
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.uitron.deserializer.ComposePropertyDeserializer
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronPropertyDeserializer
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import com.naviapp.home.compose.uiTron.model.viewProperties.RotatingViewProperty
|
||||
import com.naviapp.home.compose.uiTron.model.viewProperties.ScrollFadingCardProperty
|
||||
import com.naviapp.home.model.HomeScreenCustomWidgetType
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class HomeUitronPropertyDeserializer : ComposePropertyDeserializer() {
|
||||
class HomeUitronPropertyDeserializer : CommonUiTronPropertyDeserializer() {
|
||||
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
|
||||
@@ -9,14 +9,14 @@ package com.naviapp.home.compose.uiTron.model.serializer
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.navi.common.uitron.serializer.CommonUiTronPropertySerializer
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import com.navi.uitron.serializer.ComposePropertySerializer
|
||||
import com.naviapp.home.compose.uiTron.model.viewProperties.RotatingViewProperty
|
||||
import com.naviapp.home.compose.uiTron.model.viewProperties.ScrollFadingCardProperty
|
||||
import com.naviapp.home.model.HomeScreenCustomWidgetType
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class HomeUitronPropertySerializer : ComposePropertySerializer() {
|
||||
class HomeUitronPropertySerializer : CommonUiTronPropertySerializer() {
|
||||
override fun serialize(
|
||||
src: BaseProperty?,
|
||||
typeOfSrc: Type?,
|
||||
|
||||
@@ -24,17 +24,13 @@ import androidx.compose.material.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.runtime.snapshotFlow
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.navi.base.utils.orZero
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
import com.naviapp.forge.model.ScreenDefinition
|
||||
@@ -145,29 +141,10 @@ fun InvestmentTabWidgetRenderer(
|
||||
UiTronRenderer(
|
||||
dataMap = widget.widgetData?.data,
|
||||
uiTronViewModel = viewModel,
|
||||
customUiTronRenderer = CommonCustomUiTronRenderer()
|
||||
)
|
||||
.Render(composeViews = widget.widgetData?.parentComposeView.orEmpty())
|
||||
}
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun LazyListState.isScrollingDown(): Boolean {
|
||||
var previousIndex by remember(this) { mutableIntStateOf(firstVisibleItemIndex) }
|
||||
var previousScrollOffset by remember(this) { mutableIntStateOf(firstVisibleItemScrollOffset) }
|
||||
return remember(this) {
|
||||
derivedStateOf {
|
||||
if (previousIndex != firstVisibleItemIndex) {
|
||||
previousIndex < firstVisibleItemIndex
|
||||
} else {
|
||||
previousScrollOffset <= firstVisibleItemScrollOffset
|
||||
}
|
||||
.also {
|
||||
previousIndex = firstVisibleItemIndex
|
||||
previousScrollOffset = firstVisibleItemScrollOffset
|
||||
}
|
||||
}
|
||||
}
|
||||
.value
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.navi.base.utils.orZero
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
import com.naviapp.forge.model.ScreenDefinition
|
||||
@@ -109,6 +110,9 @@ fun RenderUitronWidgets(widget: WidgetModelDefinition<UiTronResponse>?, viewMode
|
||||
UiTronRenderer(
|
||||
dataMap = widget?.widgetData?.data,
|
||||
uiTronViewModel = viewModel,
|
||||
customUiTronRenderer = CommonCustomUiTronRenderer()
|
||||
)
|
||||
.Render(
|
||||
composeViews = widget?.widgetData?.parentComposeView.orEmpty(),
|
||||
)
|
||||
.Render(composeViews = widget?.widgetData?.parentComposeView.orEmpty())
|
||||
}
|
||||
|
||||
@@ -11,11 +11,11 @@ import com.google.gson.GsonBuilder
|
||||
import com.google.gson.JsonObject
|
||||
import com.google.gson.JsonParser
|
||||
import com.navi.ap.common.models.ApScreenDefinitionStructure
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronDataDeserializer
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronPropertyDeserializer
|
||||
import com.navi.uitron.deserializer.BaseUiTronActionDeserializer
|
||||
import com.navi.uitron.deserializer.BaseUiTronTriggerApiActionDeserializer
|
||||
import com.navi.uitron.deserializer.ComposePropertyDeserializer
|
||||
import com.navi.uitron.deserializer.CustomShapeDeserializer
|
||||
import com.navi.uitron.deserializer.UiTronDataDeserializer
|
||||
import com.navi.uitron.deserializer.UiTronValidationDeserializer
|
||||
import com.navi.uitron.deserializer.VisualTransformationDataDeserializer
|
||||
import com.navi.uitron.model.action.TriggerApiAction
|
||||
@@ -35,12 +35,12 @@ object TestUtil {
|
||||
|
||||
val customGson =
|
||||
GsonBuilder()
|
||||
.registerTypeAdapter(UiTronData::class.java, UiTronDataDeserializer())
|
||||
.registerTypeAdapter(UiTronData::class.java, CommonUiTronDataDeserializer())
|
||||
.registerTypeAdapter(
|
||||
UiTronBaseValidation::class.java,
|
||||
UiTronValidationDeserializer()
|
||||
)
|
||||
.registerTypeAdapter(BaseProperty::class.java, ComposePropertyDeserializer())
|
||||
.registerTypeAdapter(BaseProperty::class.java, CommonUiTronPropertyDeserializer())
|
||||
.registerTypeAdapter(UiTronAction::class.java, BaseUiTronActionDeserializer())
|
||||
.registerTypeAdapter(
|
||||
TriggerApiAction::class.java,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * Copyright © 2023-2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
@@ -21,11 +21,11 @@ import com.navi.ap.common.models.customwidget.DynamicRowWidgetData
|
||||
import com.navi.ap.common.models.customwidget.MappedRadioListWidgetData
|
||||
import com.navi.ap.common.models.customwidget.RadioGroupGridWidgetData
|
||||
import com.navi.ap.common.models.customwidget.StepTrackerWidgetData
|
||||
import com.navi.uitron.deserializer.UiTronDataDeserializer
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronDataDeserializer
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class CustomUiTronDataDeserializer : UiTronDataDeserializer() {
|
||||
class CustomUiTronDataDeserializer : CommonUiTronDataDeserializer() {
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
typeOfT: Type?,
|
||||
|
||||
@@ -21,11 +21,11 @@ import com.navi.ap.common.models.customwidget.DynamicRowWidgetData
|
||||
import com.navi.ap.common.models.customwidget.MappedRadioListWidgetData
|
||||
import com.navi.ap.common.models.customwidget.RadioGroupGridWidgetData
|
||||
import com.navi.ap.common.models.customwidget.StepTrackerWidgetData
|
||||
import com.navi.common.uitron.serializer.CommonUiTronDataSerializer
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.serializer.UiTronDataSerializer
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class CustomUiTronDataSerializer : UiTronDataSerializer() {
|
||||
class CustomUiTronDataSerializer : CommonUiTronDataSerializer() {
|
||||
|
||||
override fun serialize(
|
||||
src: UiTronData?,
|
||||
|
||||
@@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable
|
||||
import com.navi.ap.common.models.WidgetModelDefinition
|
||||
import com.navi.ap.common.models.WidgetTypes
|
||||
import com.navi.ap.common.viewmodel.ApplicationPlatformVM
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
|
||||
@@ -22,7 +23,7 @@ fun WidgetRenderer(
|
||||
if (widget == null) return
|
||||
return when (widget.widgetType) {
|
||||
WidgetTypes.UI_TRON_WIDGET.type -> {
|
||||
UiTronRenderer(widget.widgetData?.data, viewModel)
|
||||
UiTronRenderer(widget.widgetData?.data, viewModel, CommonCustomUiTronRenderer())
|
||||
.Render(composeViews = widget.widgetData?.parentComposeView.orEmpty())
|
||||
}
|
||||
WidgetTypes.CUSTOM_WIDGET.type -> {
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory
|
||||
import com.navi.common.uitron.model.LambdaEventData
|
||||
import com.navi.common.uitron.model.action.ThirdPartySdkAction
|
||||
import com.navi.common.uitron.model.action.UploadDataConfig
|
||||
import com.navi.common.uitron.serializer.CommonUiTronPropertySerializer
|
||||
import com.navi.common.uitron.serializer.UiTronSDKActionSerializer
|
||||
import com.navi.common.uitron.serializer.UiTronTriggerApiActionSerializer
|
||||
import com.navi.common.uitron.serializer.UiTronUploadDataSerializer
|
||||
@@ -38,7 +39,6 @@ import com.navi.uitron.model.data.UiTronAction
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import com.navi.uitron.model.visualtransformation.VisualTransformationData
|
||||
import com.navi.uitron.serializer.ComposePropertySerializer
|
||||
import com.navi.uitron.serializer.UiTronValidationSerializer
|
||||
import com.navi.uitron.serializer.VisualTransformationDataSerializer
|
||||
import dagger.Module
|
||||
@@ -68,7 +68,7 @@ object APNetworkModule {
|
||||
@APGsonSerializer
|
||||
fun providesSerializer(): Gson =
|
||||
GsonBuilder()
|
||||
.registerTypeAdapter(BaseProperty::class.java, ComposePropertySerializer())
|
||||
.registerTypeAdapter(BaseProperty::class.java, CommonUiTronPropertySerializer())
|
||||
.registerTypeAdapter(UiTronData::class.java, CustomUiTronDataSerializer())
|
||||
.registerTypeAdapter(UiTronAction::class.java, ApUiTronActionSerializer())
|
||||
.registerTypeAdapter(UploadDataConfig::class.java, UiTronUploadDataSerializer())
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.common.adverse.model
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.compose.runtime.Stable
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.model.data.UiTronActionData
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
|
||||
@Immutable
|
||||
data class AdverseViewData(
|
||||
val realEstateId: String? = null,
|
||||
val timeoutInMillis: Long? = null,
|
||||
@Stable val loadingView: UiTronResponse? = null,
|
||||
@Stable val fallbackView: UiTronResponse? = null,
|
||||
@Stable val callbacks: AdverseCallbacks? = null,
|
||||
) : UiTronData() {
|
||||
data class AdverseCallbacks(
|
||||
@Stable val adLoadStarted: UiTronActionData? = null,
|
||||
@Stable val adLoaded: UiTronActionData? = null,
|
||||
@Stable val adLoadFailed: UiTronActionData? = null,
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.common.adverse.model
|
||||
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
|
||||
class AdverseViewProperty : BaseProperty()
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.common.uitron.deserializer
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.common.adverse.model.AdverseViewData
|
||||
import com.navi.common.uitron.model.ui.CommonCustomViewType
|
||||
import com.navi.naviwidgets.utils.VIEW_TYPE
|
||||
import com.navi.uitron.deserializer.UiTronDataDeserializer
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import java.lang.reflect.Type
|
||||
|
||||
/* All the custom uitron data deserializer should extend this class */
|
||||
|
||||
open class CommonUiTronDataDeserializer : UiTronDataDeserializer() {
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
typeOfT: Type?,
|
||||
context: JsonDeserializationContext?
|
||||
): UiTronData? {
|
||||
|
||||
json?.asJsonObject?.let { jsonObject ->
|
||||
jsonObject.get(VIEW_TYPE)?.asString?.let { viewType ->
|
||||
return when (viewType) {
|
||||
CommonCustomViewType.AdverseView.name -> {
|
||||
context?.deserialize(jsonObject, AdverseViewData::class.java)
|
||||
}
|
||||
else -> super.deserialize(json, typeOfT, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.common.uitron.deserializer
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.common.adverse.model.AdverseViewProperty
|
||||
import com.navi.common.uitron.model.ui.CommonCustomViewType
|
||||
import com.navi.uitron.deserializer.ComposePropertyDeserializer
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import java.lang.reflect.Type
|
||||
|
||||
/* All the custom uitron property deserializer should extend this class */
|
||||
|
||||
open class CommonUiTronPropertyDeserializer : ComposePropertyDeserializer() {
|
||||
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
typeOfT: Type?,
|
||||
context: JsonDeserializationContext?
|
||||
): BaseProperty? {
|
||||
json?.let {
|
||||
val jsonObject = it.asJsonObject
|
||||
if (jsonObject["viewType"] == null) return null
|
||||
return when (jsonObject["viewType"].asString) {
|
||||
CommonCustomViewType.AdverseView.name -> {
|
||||
return context?.deserialize(jsonObject, AdverseViewProperty::class.java)
|
||||
}
|
||||
else -> super.deserialize(json, typeOfT, context)
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -5,17 +5,17 @@
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.naviwidgets
|
||||
package com.navi.common.uitron.deserializer
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.naviwidgets.CustomUiTronWidgetTypes
|
||||
import com.navi.naviwidgets.models.ScrollableTabWidgetData
|
||||
import com.navi.naviwidgets.utils.VIEW_TYPE
|
||||
import com.navi.uitron.deserializer.UiTronDataDeserializer
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import java.lang.reflect.Type
|
||||
|
||||
open class CustomWidgetUiTronDataDeserializer : UiTronDataDeserializer() {
|
||||
open class CustomWidgetUiTronDataDeserializer : CommonUiTronDataDeserializer() {
|
||||
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
@@ -7,4 +7,6 @@
|
||||
|
||||
package com.navi.common.uitron.model.ui
|
||||
|
||||
enum class CustomComposeViewType {}
|
||||
enum class CommonCustomViewType {
|
||||
AdverseView
|
||||
}
|
||||
@@ -7,11 +7,18 @@
|
||||
|
||||
package com.navi.common.uitron.render
|
||||
|
||||
import android.app.Activity
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import com.navi.adverse.sdk.adverseState.AdverseStateCallbacks
|
||||
import com.navi.adverse.sdk.ui.AdverseView
|
||||
import com.navi.common.adverse.model.AdverseViewData
|
||||
import com.navi.common.uitron.model.ui.CommonCustomViewType
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.model.ui.UiTronView
|
||||
import com.navi.uitron.render.CustomUiTronRenderer
|
||||
import com.navi.uitron.render.UiTronRenderer
|
||||
import com.navi.uitron.viewmodel.UiTronViewModel
|
||||
|
||||
open class CommonCustomUiTronRenderer : CustomUiTronRenderer {
|
||||
@@ -23,6 +30,40 @@ open class CommonCustomUiTronRenderer : CustomUiTronRenderer {
|
||||
uiTronViewModel: UiTronViewModel
|
||||
) {
|
||||
when (composeView.property?.viewType) {
|
||||
CommonCustomViewType.AdverseView.name -> {
|
||||
val adverseViewData =
|
||||
dataMap?.get(composeView.property?.layoutId) as? AdverseViewData
|
||||
AdverseView(
|
||||
activity = LocalContext.current as Activity,
|
||||
realEstateId = adverseViewData?.realEstateId.orEmpty(),
|
||||
fallbackView = {
|
||||
adverseViewData?.fallbackView?.let {
|
||||
UiTronRenderer(
|
||||
dataMap = it.data,
|
||||
uiTronViewModel = uiTronViewModel,
|
||||
)
|
||||
.Render(it.parentComposeView.orEmpty(), modifier)
|
||||
}
|
||||
},
|
||||
loadingView = {
|
||||
adverseViewData?.loadingView?.let {
|
||||
UiTronRenderer(
|
||||
dataMap = it.data,
|
||||
uiTronViewModel = uiTronViewModel,
|
||||
)
|
||||
.Render(it.parentComposeView.orEmpty(), modifier)
|
||||
}
|
||||
},
|
||||
callbacks =
|
||||
adverseViewData?.callbacks?.let {
|
||||
AdverseStateCallbacks(
|
||||
adLoadStarted = { uiTronViewModel.handleActions(it.adLoadStarted) },
|
||||
adLoaded = { uiTronViewModel.handleActions(it.adLoaded) },
|
||||
adLoadFailed = { uiTronViewModel.handleActions(it.adLoadFailed) }
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.common.uitron.serializer
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.navi.common.adverse.model.AdverseViewData
|
||||
import com.navi.common.uitron.model.ui.CommonCustomViewType
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.serializer.UiTronDataSerializer
|
||||
import java.lang.reflect.Type
|
||||
|
||||
/* All the custom uitron data serializer should extend this class */
|
||||
|
||||
open class CommonUiTronDataSerializer : UiTronDataSerializer() {
|
||||
override fun serialize(
|
||||
src: UiTronData?,
|
||||
typeOfSrc: Type?,
|
||||
context: JsonSerializationContext?
|
||||
): JsonElement? {
|
||||
return when (src?.viewType) {
|
||||
CommonCustomViewType.AdverseView.name -> {
|
||||
context?.serialize(src as AdverseViewData, AdverseViewData::class.java)
|
||||
}
|
||||
else -> super.serialize(src, typeOfSrc, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.common.uitron.serializer
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.navi.common.adverse.model.AdverseViewProperty
|
||||
import com.navi.common.uitron.model.ui.CommonCustomViewType
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import com.navi.uitron.serializer.ComposePropertySerializer
|
||||
import java.lang.reflect.Type
|
||||
|
||||
/* All the custom uitron property serializer should extend this class */
|
||||
|
||||
open class CommonUiTronPropertySerializer : ComposePropertySerializer() {
|
||||
override fun serialize(
|
||||
src: BaseProperty?,
|
||||
typeOfSrc: Type?,
|
||||
context: JsonSerializationContext?
|
||||
): JsonElement? {
|
||||
return when (src?.viewType) {
|
||||
CommonCustomViewType.AdverseView.name -> {
|
||||
context?.serialize(src as AdverseViewProperty, AdverseViewProperty::class.java)
|
||||
}
|
||||
else -> super.serialize(src, typeOfSrc, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,8 @@ import com.navi.common.model.DeviceDetail
|
||||
import com.navi.common.model.NaviProviderConfig
|
||||
import com.navi.common.model.WifiDetails
|
||||
import com.navi.common.network.ApiConstants
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronDataDeserializer
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronPropertyDeserializer
|
||||
import com.navi.common.uitron.deserializer.UiTronActionDeserializer
|
||||
import com.navi.common.uitron.deserializer.UiTronLaunchIntentActionDeserializer
|
||||
import com.navi.common.uitron.deserializer.UiTronSDKActionDeserializer
|
||||
@@ -56,6 +58,7 @@ import com.navi.common.uitron.deserializer.UiTronUploadDataDeserializer
|
||||
import com.navi.common.uitron.model.action.LaunchIntentAction
|
||||
import com.navi.common.uitron.model.action.ThirdPartySdkAction
|
||||
import com.navi.common.uitron.model.action.UploadDataConfig
|
||||
import com.navi.common.uitron.serializer.CommonUiTronPropertySerializer
|
||||
import com.navi.common.uitron.serializer.UiTronActionSerializer
|
||||
import com.navi.common.uitron.serializer.UiTronSDKActionSerializer
|
||||
import com.navi.common.uitron.serializer.UiTronTriggerApiActionSerializer
|
||||
@@ -66,8 +69,6 @@ import com.navi.common.utils.Constants.SESSION_TIME_OUT_THRESHOLD
|
||||
import com.navi.naviwidgets.extensions.getScreenHeight
|
||||
import com.navi.naviwidgets.extensions.getScreenWidth
|
||||
import com.navi.naviwidgets.validations.BaseInputValidation
|
||||
import com.navi.uitron.deserializer.ComposePropertyDeserializer
|
||||
import com.navi.uitron.deserializer.UiTronDataDeserializer
|
||||
import com.navi.uitron.deserializer.UiTronValidationDeserializer
|
||||
import com.navi.uitron.deserializer.VisualTransformationDataDeserializer
|
||||
import com.navi.uitron.deserializer.animationsDeserializers.AnimationSpecDeserializer
|
||||
@@ -80,7 +81,6 @@ import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import com.navi.uitron.model.ui.UiTronShape
|
||||
import com.navi.uitron.model.visualtransformation.VisualTransformationData
|
||||
import com.navi.uitron.serializer.ComposePropertySerializer
|
||||
import com.navi.uitron.serializer.UiTronValidationSerializer
|
||||
import com.navi.uitron.serializer.VisualTransformationDataSerializer
|
||||
import com.navi.uitron.serializer.animationsSerializers.AnimationSpecSerializer
|
||||
@@ -317,9 +317,9 @@ fun downloadsDirUri(fileName: String) =
|
||||
|
||||
fun GsonBuilder.registerUiTronDeSerializers(): GsonBuilder {
|
||||
return apply {
|
||||
registerTypeAdapter(UiTronData::class.java, UiTronDataDeserializer())
|
||||
registerTypeAdapter(UiTronData::class.java, CommonUiTronDataDeserializer())
|
||||
registerTypeAdapter(UiTronBaseValidation::class.java, UiTronValidationDeserializer())
|
||||
registerTypeAdapter(BaseProperty::class.java, ComposePropertyDeserializer())
|
||||
registerTypeAdapter(BaseProperty::class.java, CommonUiTronPropertyDeserializer())
|
||||
registerTypeAdapter(UiTronAction::class.java, UiTronActionDeserializer())
|
||||
registerTypeAdapter(UploadDataConfig::class.java, UiTronUploadDataDeserializer())
|
||||
registerTypeAdapter(TriggerApiAction::class.java, UiTronTriggerApiActionDeserializer())
|
||||
@@ -338,7 +338,7 @@ fun GsonBuilder.registerUiTronDeSerializers(): GsonBuilder {
|
||||
|
||||
fun GsonBuilder.registerUiTronSerializer(): GsonBuilder {
|
||||
return apply {
|
||||
registerTypeAdapter(BaseProperty::class.java, ComposePropertySerializer())
|
||||
registerTypeAdapter(BaseProperty::class.java, CommonUiTronPropertySerializer())
|
||||
registerTypeAdapter(UiTronAction::class.java, UiTronActionSerializer())
|
||||
registerTypeAdapter(UploadDataConfig::class.java, UiTronUploadDataSerializer())
|
||||
registerTypeAdapter(BaseInputValidation::class.java, UiTronValidationSerializer())
|
||||
|
||||
@@ -9,14 +9,14 @@ package com.navi.cycs.common.utils
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronDataDeserializer
|
||||
import com.navi.cycs.common.model.CustomWidgets
|
||||
import com.navi.cycs.common.model.response.CreditScoreData
|
||||
import com.navi.cycs.common.model.response.CreditScoreTrendData
|
||||
import com.navi.uitron.deserializer.UiTronDataDeserializer
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class CycsUiTronDataDeserializer : UiTronDataDeserializer() {
|
||||
class CycsUiTronDataDeserializer : CommonUiTronDataDeserializer() {
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
typeOfT: Type?,
|
||||
|
||||
@@ -9,14 +9,14 @@ package com.navi.cycs.common.utils
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.navi.common.uitron.serializer.CommonUiTronDataSerializer
|
||||
import com.navi.cycs.common.model.CustomWidgets
|
||||
import com.navi.cycs.common.model.response.CreditScoreData
|
||||
import com.navi.cycs.common.model.response.CreditScoreTrendData
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.serializer.UiTronDataSerializer
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class CycsUiTronDataSerializer : UiTronDataSerializer() {
|
||||
class CycsUiTronDataSerializer : CommonUiTronDataSerializer() {
|
||||
override fun serialize(
|
||||
src: UiTronData?,
|
||||
typeOfSrc: Type?,
|
||||
|
||||
@@ -9,17 +9,17 @@ package com.navi.rr.common.deserializer
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronDataDeserializer
|
||||
import com.navi.rr.milestones.models.MilestoneDataV2
|
||||
import com.navi.rr.uitron.model.data.CountDownTextData
|
||||
import com.navi.rr.uitron.model.data.LeaderboardHeaderData
|
||||
import com.navi.rr.uitron.model.data.LeaderboardRewardGridData
|
||||
import com.navi.rr.uitron.model.ui.RRComposeViewType
|
||||
import com.navi.uitron.deserializer.UiTronDataDeserializer
|
||||
import com.navi.uitron.model.data.TextData
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class RRComposeDataDeserializer : UiTronDataDeserializer() {
|
||||
class RRComposeDataDeserializer : CommonUiTronDataDeserializer() {
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
typeOfT: Type?,
|
||||
|
||||
@@ -9,16 +9,16 @@ package com.navi.rr.common.deserializer
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.common.uitron.deserializer.CommonUiTronPropertyDeserializer
|
||||
import com.navi.rr.uitron.model.ui.CountDownTextProperty
|
||||
import com.navi.rr.uitron.model.ui.LeaderboardHeaderProperty
|
||||
import com.navi.rr.uitron.model.ui.LeaderboardRewardGridProperty
|
||||
import com.navi.rr.uitron.model.ui.RRComposeViewType
|
||||
import com.navi.rr.uitron.model.ui.TextWithShadowProperty
|
||||
import com.navi.uitron.deserializer.ComposePropertyDeserializer
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class RRComposePropertyDeserializer : ComposePropertyDeserializer() {
|
||||
class RRComposePropertyDeserializer : CommonUiTronPropertyDeserializer() {
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
typeOfT: Type?,
|
||||
|
||||
@@ -9,6 +9,7 @@ package com.navi.rr.common.serializer
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.navi.common.uitron.serializer.CommonUiTronDataSerializer
|
||||
import com.navi.rr.milestones.models.MilestoneDataV2
|
||||
import com.navi.rr.uitron.model.data.CountDownTextData
|
||||
import com.navi.rr.uitron.model.data.LeaderboardHeaderData
|
||||
@@ -16,10 +17,9 @@ import com.navi.rr.uitron.model.data.LeaderboardRewardGridData
|
||||
import com.navi.rr.uitron.model.ui.RRComposeViewType
|
||||
import com.navi.uitron.model.data.TextData
|
||||
import com.navi.uitron.model.data.UiTronData
|
||||
import com.navi.uitron.serializer.UiTronDataSerializer
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class RRComposeDataSerializer : UiTronDataSerializer() {
|
||||
class RRComposeDataSerializer : CommonUiTronDataSerializer() {
|
||||
override fun serialize(
|
||||
src: UiTronData?,
|
||||
typeOfSrc: Type?,
|
||||
|
||||
@@ -9,16 +9,16 @@ package com.navi.rr.common.serializer
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.navi.common.uitron.serializer.CommonUiTronPropertySerializer
|
||||
import com.navi.rr.uitron.model.ui.CountDownTextProperty
|
||||
import com.navi.rr.uitron.model.ui.LeaderboardHeaderProperty
|
||||
import com.navi.rr.uitron.model.ui.LeaderboardRewardGridProperty
|
||||
import com.navi.rr.uitron.model.ui.RRComposeViewType
|
||||
import com.navi.rr.uitron.model.ui.TextWithShadowProperty
|
||||
import com.navi.uitron.model.ui.BaseProperty
|
||||
import com.navi.uitron.serializer.ComposePropertySerializer
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class RRComposePropertySerializer : ComposePropertySerializer() {
|
||||
class RRComposePropertySerializer : CommonUiTronPropertySerializer() {
|
||||
override fun serialize(
|
||||
src: BaseProperty?,
|
||||
typeOfSrc: Type?,
|
||||
|
||||
Reference in New Issue
Block a user