From 1cd70cb9a04557915a541b6abbdb9e37915d1d20 Mon Sep 17 00:00:00 2001 From: Soumya Ranjan Patra Date: Wed, 17 Jul 2024 17:47:11 +0530 Subject: [PATCH] TP-70970 | Add support for showing ads in Uitron based screens (#11796) --- .../CustomHomeWidgetDataDeSerializer.kt | 2 +- .../CustomHomeWidgetDataSerializer.kt | 4 +- .../common/tab/InsuranceTabFragment.kt | 7 +++- .../widgetfactory/ForgeWidgetRenderer.kt | 3 +- .../forge/widgetfactory/WidgetRenderer.kt | 4 +- .../home/ui/content/FrontLayerContent.kt | 7 +++- .../profile/ProfileScreenWidgetRenderer.kt | 2 + .../HomeUitronPropertyDeserializer.kt | 4 +- .../HomeUitronPropertySerializer.kt | 4 +- .../compose/investmentTab/InvestmentsTab.kt | 27 +----------- .../dashboard/ui/compose/loansTab/LoanTab.kt | 6 ++- .../app/src/test/java/com/naviapp/TestUtil.kt | 8 ++-- .../CustomUiTronDataDeserializer.kt | 6 +-- .../serializer/CustomUiTronDataSerializer.kt | 4 +- .../ap/common/widgetfactory/WidgetRenderer.kt | 3 +- .../com/navi/ap/network/di/APNetworkModule.kt | 4 +- .../common/adverse/model/AdverseViewData.kt | 29 +++++++++++++ .../adverse/model/AdverseViewProperty.kt | 12 ++++++ .../CommonUiTronDataDeserializer.kt | 40 ++++++++++++++++++ .../CommonUiTronPropertyDeserializer.kt | 39 ++++++++++++++++++ .../CustomWidgetUiTronDataDeserializer.kt | 6 +-- ...oseViewType.kt => CommonCustomViewType.kt} | 4 +- .../render/CommonCustomUiTronRenderer.kt | 41 +++++++++++++++++++ .../serializer/CommonUiTronDataSerializer.kt | 33 +++++++++++++++ .../CommonUiTronPropertySerializer.kt | 33 +++++++++++++++ .../java/com/navi/common/utils/Utility.kt | 12 +++--- .../utils/CycsUiTronDataDeserializer.kt | 4 +- .../common/utils/CycsUiTronDataSerializer.kt | 4 +- .../deserializer/RRComposeDataDeserializer.kt | 4 +- .../RRComposePropertyDeserializer.kt | 4 +- .../serializer/RRComposeDataSerializer.kt | 4 +- .../serializer/RRComposePropertySerializer.kt | 4 +- 32 files changed, 297 insertions(+), 71 deletions(-) create mode 100644 android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewData.kt create mode 100644 android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewProperty.kt create mode 100644 android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronDataDeserializer.kt create mode 100644 android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronPropertyDeserializer.kt rename android/{navi-widgets/src/main/java/com/navi/naviwidgets => navi-common/src/main/java/com/navi/common/uitron/deserializer}/CustomWidgetUiTronDataDeserializer.kt (84%) rename android/navi-common/src/main/java/com/navi/common/uitron/model/ui/{CustomComposeViewType.kt => CommonCustomViewType.kt} (75%) create mode 100644 android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronDataSerializer.kt create mode 100644 android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronPropertySerializer.kt diff --git a/android/app/src/main/java/com/naviapp/common/deserializer/CustomHomeWidgetDataDeSerializer.kt b/android/app/src/main/java/com/naviapp/common/deserializer/CustomHomeWidgetDataDeSerializer.kt index 11d75d5ba3..4b49fc6754 100644 --- a/android/app/src/main/java/com/naviapp/common/deserializer/CustomHomeWidgetDataDeSerializer.kt +++ b/android/app/src/main/java/com/naviapp/common/deserializer/CustomHomeWidgetDataDeSerializer.kt @@ -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 diff --git a/android/app/src/main/java/com/naviapp/common/serializer/CustomHomeWidgetDataSerializer.kt b/android/app/src/main/java/com/naviapp/common/serializer/CustomHomeWidgetDataSerializer.kt index cfaefe50dc..1b9ce15180 100644 --- a/android/app/src/main/java/com/naviapp/common/serializer/CustomHomeWidgetDataSerializer.kt +++ b/android/app/src/main/java/com/naviapp/common/serializer/CustomHomeWidgetDataSerializer.kt @@ -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?, diff --git a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt index 50dd38ff14..94f09fea95 100644 --- a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt +++ b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt @@ -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() diff --git a/android/app/src/main/java/com/naviapp/forge/widgetfactory/ForgeWidgetRenderer.kt b/android/app/src/main/java/com/naviapp/forge/widgetfactory/ForgeWidgetRenderer.kt index bba0215c4c..f72aeb90a6 100644 --- a/android/app/src/main/java/com/naviapp/forge/widgetfactory/ForgeWidgetRenderer.kt +++ b/android/app/src/main/java/com/naviapp/forge/widgetfactory/ForgeWidgetRenderer.kt @@ -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 diff --git a/android/app/src/main/java/com/naviapp/forge/widgetfactory/WidgetRenderer.kt b/android/app/src/main/java/com/naviapp/forge/widgetfactory/WidgetRenderer.kt index 4f9db42164..513888abbc 100644 --- a/android/app/src/main/java/com/naviapp/forge/widgetfactory/WidgetRenderer.kt +++ b/android/app/src/main/java/com/naviapp/forge/widgetfactory/WidgetRenderer.kt @@ -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?, viewModel: Fo UiTronRenderer( dataMap = widget.widgetData?.data, uiTronViewModel = viewModel, + customUiTronRenderer = CommonCustomUiTronRenderer() ) .Render(composeViews = widget.widgetData?.parentComposeView.orEmpty()) } diff --git a/android/app/src/main/java/com/naviapp/home/compose/home/ui/content/FrontLayerContent.kt b/android/app/src/main/java/com/naviapp/home/compose/home/ui/content/FrontLayerContent.kt index 17fe7261a3..6a803cab59 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/home/ui/content/FrontLayerContent.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/home/ui/content/FrontLayerContent.kt @@ -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, 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()) } } diff --git a/android/app/src/main/java/com/naviapp/home/compose/profile/ProfileScreenWidgetRenderer.kt b/android/app/src/main/java/com/naviapp/home/compose/profile/ProfileScreenWidgetRenderer.kt index 833080d6c9..b486eb4e3d 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/profile/ProfileScreenWidgetRenderer.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/profile/ProfileScreenWidgetRenderer.kt @@ -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()) } diff --git a/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/deserializer/HomeUitronPropertyDeserializer.kt b/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/deserializer/HomeUitronPropertyDeserializer.kt index cb18f6c879..52189eac0f 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/deserializer/HomeUitronPropertyDeserializer.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/deserializer/HomeUitronPropertyDeserializer.kt @@ -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?, diff --git a/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/serializer/HomeUitronPropertySerializer.kt b/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/serializer/HomeUitronPropertySerializer.kt index 48c70b62a8..3ad6aa5fe6 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/serializer/HomeUitronPropertySerializer.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/uiTron/model/serializer/HomeUitronPropertySerializer.kt @@ -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?, diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/investmentTab/InvestmentsTab.kt b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/investmentTab/InvestmentsTab.kt index 7eadf3bc76..7b6599c49a 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/investmentTab/InvestmentsTab.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/investmentTab/InvestmentsTab.kt @@ -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 -} diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoanTab.kt b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoanTab.kt index e82261d4d3..a7ae3db24c 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoanTab.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoanTab.kt @@ -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?, viewMode UiTronRenderer( dataMap = widget?.widgetData?.data, uiTronViewModel = viewModel, + customUiTronRenderer = CommonCustomUiTronRenderer() + ) + .Render( + composeViews = widget?.widgetData?.parentComposeView.orEmpty(), ) - .Render(composeViews = widget?.widgetData?.parentComposeView.orEmpty()) } diff --git a/android/app/src/test/java/com/naviapp/TestUtil.kt b/android/app/src/test/java/com/naviapp/TestUtil.kt index 4e1dc435a4..64520115d1 100644 --- a/android/app/src/test/java/com/naviapp/TestUtil.kt +++ b/android/app/src/test/java/com/naviapp/TestUtil.kt @@ -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, diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/deserializer/CustomUiTronDataDeserializer.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/deserializer/CustomUiTronDataDeserializer.kt index 3d929e87f4..121f524583 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/deserializer/CustomUiTronDataDeserializer.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/deserializer/CustomUiTronDataDeserializer.kt @@ -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?, diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/serializer/CustomUiTronDataSerializer.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/serializer/CustomUiTronDataSerializer.kt index a8337257be..d408a31133 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/serializer/CustomUiTronDataSerializer.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/serializer/CustomUiTronDataSerializer.kt @@ -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?, diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/widgetfactory/WidgetRenderer.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/widgetfactory/WidgetRenderer.kt index 5e6a8d545c..76198662e7 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/widgetfactory/WidgetRenderer.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/widgetfactory/WidgetRenderer.kt @@ -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 -> { diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/di/APNetworkModule.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/di/APNetworkModule.kt index 856d13df7e..997af5b62d 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/di/APNetworkModule.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/di/APNetworkModule.kt @@ -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()) diff --git a/android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewData.kt b/android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewData.kt new file mode 100644 index 0000000000..7a8de4c02f --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewData.kt @@ -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, + ) +} diff --git a/android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewProperty.kt b/android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewProperty.kt new file mode 100644 index 0000000000..0e9fb1df0d --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/adverse/model/AdverseViewProperty.kt @@ -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() diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronDataDeserializer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronDataDeserializer.kt new file mode 100644 index 0000000000..7c9396d7a5 --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronDataDeserializer.kt @@ -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 + } +} diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronPropertyDeserializer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronPropertyDeserializer.kt new file mode 100644 index 0000000000..0ed1d56289 --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CommonUiTronPropertyDeserializer.kt @@ -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 + } +} diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/CustomWidgetUiTronDataDeserializer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CustomWidgetUiTronDataDeserializer.kt similarity index 84% rename from android/navi-widgets/src/main/java/com/navi/naviwidgets/CustomWidgetUiTronDataDeserializer.kt rename to android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CustomWidgetUiTronDataDeserializer.kt index ad712f824d..b60c4369bc 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/CustomWidgetUiTronDataDeserializer.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/CustomWidgetUiTronDataDeserializer.kt @@ -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?, diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/model/ui/CustomComposeViewType.kt b/android/navi-common/src/main/java/com/navi/common/uitron/model/ui/CommonCustomViewType.kt similarity index 75% rename from android/navi-common/src/main/java/com/navi/common/uitron/model/ui/CustomComposeViewType.kt rename to android/navi-common/src/main/java/com/navi/common/uitron/model/ui/CommonCustomViewType.kt index 527ca7fb8b..e61dec44ea 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/model/ui/CustomComposeViewType.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/model/ui/CommonCustomViewType.kt @@ -7,4 +7,6 @@ package com.navi.common.uitron.model.ui -enum class CustomComposeViewType {} +enum class CommonCustomViewType { + AdverseView +} diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/render/CommonCustomUiTronRenderer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/render/CommonCustomUiTronRenderer.kt index a98c0ac42f..1e97e497b7 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/render/CommonCustomUiTronRenderer.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/render/CommonCustomUiTronRenderer.kt @@ -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 } } diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronDataSerializer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronDataSerializer.kt new file mode 100644 index 0000000000..b95e5b984c --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronDataSerializer.kt @@ -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) + } + } +} diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronPropertySerializer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronPropertySerializer.kt new file mode 100644 index 0000000000..39ea594ad4 --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/uitron/serializer/CommonUiTronPropertySerializer.kt @@ -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) + } + } +} diff --git a/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt b/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt index f3b566c267..6e9435205d 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt @@ -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()) diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataDeserializer.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataDeserializer.kt index 7d82de9df8..4652cd0969 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataDeserializer.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataDeserializer.kt @@ -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?, diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataSerializer.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataSerializer.kt index 7840280d7d..959aba3732 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataSerializer.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUiTronDataSerializer.kt @@ -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?, diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposeDataDeserializer.kt b/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposeDataDeserializer.kt index 0b6e644cc3..20fde55dd2 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposeDataDeserializer.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposeDataDeserializer.kt @@ -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?, diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposePropertyDeserializer.kt b/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposePropertyDeserializer.kt index f6f402ec3a..bfa33e1211 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposePropertyDeserializer.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/deserializer/RRComposePropertyDeserializer.kt @@ -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?, diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposeDataSerializer.kt b/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposeDataSerializer.kt index b00ae5b037..34e9937f64 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposeDataSerializer.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposeDataSerializer.kt @@ -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?, diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposePropertySerializer.kt b/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposePropertySerializer.kt index d956288992..174ff24baf 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposePropertySerializer.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/serializer/RRComposePropertySerializer.kt @@ -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?,