From 0c66940f954b9282c0701de96e090ff009eea7cc Mon Sep 17 00:00:00 2001 From: Sanjay P Date: Tue, 3 Sep 2024 21:47:22 +0530 Subject: [PATCH] TP-81196 | Select EMI Date Issue Fix (#12341) --- .../loansTab/LoansTabContentShimmer.kt | 28 +++++++++---------- .../ui/compose/loansTab/LoansTabScreen.kt | 3 +- .../verticals/personalloan/PLLambdaImpl.kt | 8 ++++-- .../personalloan/PLLambdaRepository.kt | 6 ++-- .../models/customwidget/CalendarWidgetData.kt | 3 +- .../navi/ap/common/renderer/CalendarWidget.kt | 2 ++ .../retrofit/service/PlLambdaService.kt | 1 + .../ap/utils/constants/LambdaConstants.kt | 1 + 8 files changed, 31 insertions(+), 21 deletions(-) diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabContentShimmer.kt b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabContentShimmer.kt index 455f31d1c1..bddbbaebbf 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabContentShimmer.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabContentShimmer.kt @@ -16,6 +16,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.material.Card import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -23,19 +24,18 @@ import androidx.compose.ui.unit.dp import com.naviapp.home.utils.shimmerEffect @Composable -fun LoansTabContentShimmer(backgroundColor: Color = Color.Transparent) { - Column( - modifier = - Modifier.fillMaxWidth().padding(start = 16.dp, end = 16.dp).background(backgroundColor) - ) { - Box(modifier = Modifier.height(274.dp).fillMaxWidth().shimmerEffect()) - Spacer(modifier = Modifier.height(32.dp)) - Box(modifier = Modifier.height(24.dp).width(100.dp).shimmerEffect()) - Spacer(modifier = Modifier.height(16.dp)) - Box(modifier = Modifier.height(180.dp).fillMaxWidth().shimmerEffect()) - Spacer(modifier = Modifier.height(32.dp)) - Box(modifier = Modifier.height(24.dp).width(100.dp).shimmerEffect()) - Spacer(modifier = Modifier.height(16.dp)) - Box(modifier = Modifier.fillMaxHeight().fillMaxWidth().shimmerEffect()) +fun LoansTabContentShimmer(backgroundColor: Color = Color.White) { + Card(modifier = Modifier.fillMaxWidth().background(backgroundColor)) { + Column(modifier = Modifier.fillMaxWidth().padding(start = 16.dp, end = 16.dp)) { + Box(modifier = Modifier.height(274.dp).fillMaxWidth().shimmerEffect()) + Spacer(modifier = Modifier.height(32.dp)) + Box(modifier = Modifier.height(24.dp).width(100.dp).shimmerEffect()) + Spacer(modifier = Modifier.height(16.dp)) + Box(modifier = Modifier.height(180.dp).fillMaxWidth().shimmerEffect()) + Spacer(modifier = Modifier.height(32.dp)) + Box(modifier = Modifier.height(24.dp).width(100.dp).shimmerEffect()) + Spacer(modifier = Modifier.height(16.dp)) + Box(modifier = Modifier.fillMaxHeight().fillMaxWidth().shimmerEffect()) + } } } diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt index 2c69d5b8d3..25c040bee2 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt @@ -15,7 +15,6 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -215,7 +214,7 @@ private fun LoansTabWebView( } ) if (showLoaderState.value) { - LoansTabContentShimmer(Color.White) + LoansTabContentShimmer() } } } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt index 87b924526c..9ef709d941 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt @@ -88,6 +88,7 @@ import com.navi.ap.utils.constants.RPD_PAYMENT_URI import com.navi.ap.utils.constants.S3_KEY import com.navi.ap.utils.constants.SEARCH_DEBOUNCE_TIME_IN_MILLIS import com.navi.ap.utils.constants.SELECTED_BANK +import com.navi.ap.utils.constants.SELECTED_EMI_DATE import com.navi.ap.utils.constants.SELECTED_IFSC_DATA import com.navi.ap.utils.constants.SELECTED_LOAN_AMOUNT import com.navi.ap.utils.constants.SELECTED_TENURE @@ -193,6 +194,7 @@ internal class PLLambdaImpl( var tenure = resolvedValues[SELECTED_TENURE]?.toString() val emiPlanSelected = resolvedValues[SELECTED_TENURE_PILL_INDEX]?.toString() val offerType = resolvedValues[OFFER_TYPE]?.toString() + val selectedEmiDate = resolvedValues[SELECTED_EMI_DATE]?.toString() if ( savedAmount == amount && @@ -218,7 +220,8 @@ internal class PLLambdaImpl( amount = amount, tenureInMonths = tenure, emiPlansSelected = emiPlanSelected, - offerType = offerType + offerType = offerType, + selectedEmiDate = selectedEmiDate ) bridge.setLambdaState( when { @@ -1264,7 +1267,8 @@ internal class PLLambdaImpl( bridge.setLambdaState(LambdaState.Loading) val lambdaResponse = repository.fetchOfferDetails( - fetchEmiDates = resolvedValues[FETCH_EMI_DATES]?.toString()?.toBoolean() + fetchEmiDates = resolvedValues[FETCH_EMI_DATES]?.toString()?.toBoolean(), + selectedEmiDate = resolvedValues[SELECTED_EMI_DATE]?.toString() ) bridge.setLambdaState( diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt index d432548ae2..9b5855bb2e 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt @@ -75,7 +75,8 @@ class PLLambdaRepository @Inject constructor(private val retrofitService: APRetr tenureInMonths: String? = null, emiPlansSelected: String? = null, fetchEmiDates: Boolean? = false, - offerType: String? = null + offerType: String? = null, + selectedEmiDate: String? = null ): ApRepoResult { val response = retrofitService.getOfferDetails( @@ -83,7 +84,8 @@ class PLLambdaRepository @Inject constructor(private val retrofitService: APRetr tenureInMonths = tenureInMonths, emiPlansSelected = emiPlansSelected, fetchEmiDates = fetchEmiDates, - offerType = offerType + offerType = offerType, + selectedEmiDate = selectedEmiDate ) logApiResponseEvents(methodName = ::fetchOfferDetails.name, response = response) return apiResponseCallback(response = response, apiTag = ApiType.GetScreenDefinition.name) diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/models/customwidget/CalendarWidgetData.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/models/customwidget/CalendarWidgetData.kt index f20471afe4..0f9d4f8f92 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/models/customwidget/CalendarWidgetData.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/models/customwidget/CalendarWidgetData.kt @@ -35,7 +35,8 @@ data class CalendarWidgetData( @SerializedName("errorTextProperty") val errorTextProperty: TextProperty? = null, @SerializedName("errorIconProperty") val errorIconProperty: ImageProperty? = null, @SerializedName("errorImageUrl") val errorImageUrl: String? = null, - @SerializedName("errorMessage") val errorMessage: TextData? = null + @SerializedName("errorMessage") val errorMessage: TextData? = null, + @SerializedName("selectedDateRaw") val selectedDateRaw: String? = null ) : UiTronData(), Parcelable { @IgnoredOnParcel diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/renderer/CalendarWidget.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/renderer/CalendarWidget.kt index 13a89e7bc2..a187fd300d 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/renderer/CalendarWidget.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/renderer/CalendarWidget.kt @@ -39,6 +39,7 @@ import com.navi.ap.common.models.customwidget.CalendarDateElementData import com.navi.ap.common.models.customwidget.CalendarWidgetData import com.navi.ap.utils.constants.SELECTED_DATE import com.navi.ap.utils.constants.SELECTED_DATE_WITH_SUFFIX +import com.navi.ap.utils.constants.SELECTED_EMI_DATE import com.navi.ap.utils.constants.SELECTED_FORMATTED_DATE import com.navi.ap.utils.constants.SELECTED_RAW_DATE import com.navi.ap.utils.constants.SHOW @@ -98,6 +99,7 @@ class CalendarWidget { if (selectedDate == null) return@LaunchedEffect viewModel.handle[calendarWidgetData.layoutId.getInputId()] = selectedDate.toString() viewModel.handle[SELECTED_RAW_DATE] = selectedDate + viewModel.handle[SELECTED_EMI_DATE] = calendarWidgetData.selectedDateRaw calendarWidgetData.emiDate ?.firstOrNull { it.rawDate == selectedDate } ?.let { diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/service/PlLambdaService.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/service/PlLambdaService.kt index bf39c2341e..3746648b67 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/service/PlLambdaService.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/service/PlLambdaService.kt @@ -64,6 +64,7 @@ interface PlLambdaService { @Query("tenureInMonths") tenureInMonths: String? = null, @Query("emiPlansSelected") emiPlansSelected: String? = null, @Query("fetchEmiDates") fetchEmiDates: Boolean? = null, + @Query("firstEmiDate") selectedEmiDate: String? = null, @Header("X-Target") target: String = ModuleName.LE.name, ): Response> diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/constants/LambdaConstants.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/constants/LambdaConstants.kt index 26d7891675..3de32c6794 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/constants/LambdaConstants.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/constants/LambdaConstants.kt @@ -99,3 +99,4 @@ const val S3_KEY = "S3_KEY" const val OFFER_TYPE = "offerType" const val FETCH_EMI_DATES = "fetchEmiDates" const val LOAN_DISBURSEMENT_FIRST_EMI_DUE_DATE = "loanDisbursement.firstEmiDueDate" +const val SELECTED_EMI_DATE = "selectedEmiDate"