TP-70970 | Add support for showing ads in Uitron based screens (#11796)

This commit is contained in:
Soumya Ranjan Patra
2024-07-17 17:47:11 +05:30
committed by GitHub
parent 948b9cf7ad
commit 1cd70cb9a0
32 changed files with 297 additions and 71 deletions

View File

@@ -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

View File

@@ -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?,

View File

@@ -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()

View File

@@ -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

View File

@@ -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())
}

View File

@@ -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())
}
}

View File

@@ -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())
}

View File

@@ -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?,

View File

@@ -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?,

View File

@@ -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
}

View File

@@ -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())
}

View File

@@ -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,

View File

@@ -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?,

View File

@@ -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?,

View File

@@ -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 -> {

View File

@@ -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())

View File

@@ -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,
)
}

View File

@@ -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()

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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?,

View File

@@ -7,4 +7,6 @@
package com.navi.common.uitron.model.ui
enum class CustomComposeViewType {}
enum class CommonCustomViewType {
AdverseView
}

View File

@@ -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
}
}

View File

@@ -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)
}
}
}

View File

@@ -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)
}
}
}

View File

@@ -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())

View File

@@ -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?,

View File

@@ -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?,

View File

@@ -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?,

View File

@@ -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?,

View File

@@ -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?,

View File

@@ -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?,