From 30c0078ff2b1fc1dd014b1352d258ca68f0b5135 Mon Sep 17 00:00:00 2001 From: Anupam Kumar Date: Fri, 5 Jan 2024 13:22:56 +0530 Subject: [PATCH] TP-53247 | Old Loan Application ID update change fix (#9211) --- .../viewmodels/LoanSummaryV2ViewModel.kt | 15 +++++++ .../dynamic/fragment/LoanSummaryV2Fragment.kt | 42 +++++++------------ 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/naviapp/personalloanrevamp/useridentificationv2/viewmodels/LoanSummaryV2ViewModel.kt b/app/src/main/java/com/naviapp/personalloanrevamp/useridentificationv2/viewmodels/LoanSummaryV2ViewModel.kt index c7ade3fb97..addff24c11 100644 --- a/app/src/main/java/com/naviapp/personalloanrevamp/useridentificationv2/viewmodels/LoanSummaryV2ViewModel.kt +++ b/app/src/main/java/com/naviapp/personalloanrevamp/useridentificationv2/viewmodels/LoanSummaryV2ViewModel.kt @@ -27,6 +27,7 @@ import com.naviapp.personalloan.getloan.summary.repositories.SummaryRepository import com.naviapp.personalloanrevamp.models.FLOW_LOAN_SUMMARY import com.naviapp.personalloanrevamp.models.request.UpdateEmiDateRequest import com.naviapp.personalloanrevamp.models.response.LoanSummaryViewResponse +import com.naviapp.utils.LOAN_APPLICATION_ID import com.naviapp.utils.SELECTED_EMI_DATE import com.naviapp.utils.WHATSAPP_COMMUNICATION_ENABLED import kotlinx.coroutines.launch @@ -66,6 +67,8 @@ class LoanSummaryV2ViewModel(private val repository: SummaryRepository = Summary private var footerDescriptionClickableText: ClickableText? = null + private var loanApplicationId: String? = null + fun fetchSummary(loanApplicationId: String) { val selectedEmiDate = PreferenceManager.getStringPreference(SELECTED_EMI_DATE) viewModelScope.launch { @@ -144,6 +147,7 @@ class LoanSummaryV2ViewModel(private val repository: SummaryRepository = Summary val response = repository.fetchLoanBasicDetails() if (response.isValidResponse()) { _loanBasicDetails.value = response.data + updateLoanApplicationId(response.data?.loanApplicationId) } else { setErrorData( response.errors, response.error, @@ -210,4 +214,15 @@ class LoanSummaryV2ViewModel(private val repository: SummaryRepository = Summary return this.footerDescriptionClickableText } + fun updateLoanApplicationId(loanApplicationId: String?) { + this.loanApplicationId = loanApplicationId + loanApplicationId?.let { + PreferenceManager.setStringPreference(LOAN_APPLICATION_ID, it) + } + } + + fun getLoanApplicationId(): String? { + return this.loanApplicationId + } + } diff --git a/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/fragment/LoanSummaryV2Fragment.kt b/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/fragment/LoanSummaryV2Fragment.kt index 916c5a8379..4d9a87a7ca 100644 --- a/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/fragment/LoanSummaryV2Fragment.kt +++ b/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/fragment/LoanSummaryV2Fragment.kt @@ -7,7 +7,6 @@ package com.navi.pl.dynamic.fragment -import com.navi.naviwidgets.R as WidgetsR import android.content.Context import android.os.Bundle import android.view.LayoutInflater @@ -23,6 +22,7 @@ import com.navi.base.model.ClickableTextType import com.navi.base.model.CtaData import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils +import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.isNull import com.navi.base.utils.orElse import com.navi.base.utils.orFalse @@ -36,17 +36,14 @@ import com.navi.common.model.InfoBottomSheetConfig import com.navi.common.model.UploadDataAsyncResponse import com.navi.common.ui.fragment.BaseFragment import com.navi.common.utils.ApiPollScheduler -import com.navi.common.utils.changeValueOfExistingCtaParams import com.navi.common.utils.getCtaParamValueForKey import com.navi.common.utils.log import com.navi.common.utils.observeNonNull import com.navi.common.utils.observeNullable import com.navi.common.utils.toBundle -import com.navi.naviwidgets.actions.ShowInfoBottomSheetV3Action import com.navi.naviwidgets.base.BaseInputWidget import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.databinding.LayoutRewardsInfoBinding -import com.navi.naviwidgets.models.response.LoanRepaymentBottomSheetData import com.navi.naviwidgets.utils.getInfoBottomSheetDataFromJsonObject import com.navi.naviwidgets.utils.setBackgroundColor import com.navi.naviwidgets.widgets.labledtextinput.InputTextWidgetMeta @@ -68,7 +65,6 @@ import com.naviapp.databinding.PlFragmentLoanSummaryV2Binding import com.naviapp.models.UserProfile import com.naviapp.models.request.LoanFeeDetailsRequest import com.naviapp.models.request.SendOtpForDisbursementRequest -import com.naviapp.models.response.LoanBasicDetailsResponse import com.naviapp.models.response.LoanDetailsV2AdditionData import com.naviapp.models.response.Medium import com.naviapp.models.response.NotificationSettingsResponse @@ -93,13 +89,13 @@ import com.naviapp.utils.Constants.FLOW_TYPE import com.naviapp.utils.Constants.PL_JOURNEY_POLLING_INITIAL_DELAY_IN_SECONDS import com.naviapp.utils.Constants.PL_SCREEN_ACTIVITY import com.naviapp.utils.Constants.USER_SELECTED -import com.naviapp.utils.LOAN_APPLICATION_ID import com.naviapp.utils.SELECTED_EMI_DATE import com.naviapp.utils.getWidgetPositionFromWidgetId import com.naviapp.utils.isValidEmail import com.naviapp.utils.navigateToClickableText import com.naviapp.utils.setPadding import com.naviapp.utils.setTextColorFromString +import com.navi.naviwidgets.R as WidgetsR class LoanSummaryV2Fragment : BaseFragment(), @@ -111,7 +107,6 @@ class LoanSummaryV2Fragment : private lateinit var binding: PlFragmentLoanSummaryV2Binding private val viewModel by lazy { ViewModelProvider(this)[LoanSummaryV2ViewModel::class.java] } - private var loanApplicationId: String? = null private val eventTracker by lazy { NaviAnalytics.naviAnalytics.GetLoan(screenName) } private var listener: FragmentInteractionListener? = null private var headerListener: NaviHeaderView.InteractionListener? = null @@ -134,9 +129,7 @@ class LoanSummaryV2Fragment : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - loanApplicationId = - arguments?.getString(Constants.PERSONAL_LOAN_APPLICATION_ID) - ?: PreferenceManager.getStringPreference(LOAN_APPLICATION_ID) + viewModel.updateLoanApplicationId(arguments?.getString(Constants.PERSONAL_LOAN_APPLICATION_ID)) } private fun initAsync(asyncResponse: UploadDataAsyncResponse) { @@ -200,10 +193,8 @@ class LoanSummaryV2Fragment : private fun fetchSummary() { showLoader() - val id = loanApplicationId - if (!id.isNullOrBlank()) { - viewModel.fetchSummary(id) - PreferenceManager.setStringPreference(LOAN_APPLICATION_ID, id) + if (viewModel.getLoanApplicationId().isNotNullAndNotEmpty()) { + viewModel.fetchSummary(viewModel.getLoanApplicationId().toString()) } else viewModel.fetchLoanBasicDetails() } @@ -216,7 +207,7 @@ class LoanSummaryV2Fragment : initData(loanSummaryViewResponse) setPageBackgroundColor(loanSummaryViewResponse.content?.pageBgColor) } - viewModel.loanBasicDetails.observeNonNull(this) { handleLoanBasicDetails(it) } + viewModel.loanBasicDetails.observeNonNull(this) { handleLoanBasicDetails() } viewModel.signLoanAgreementResponse.observeNonNull(this) { initAsync(it) } viewModel.signLoanAgreementStatus.observeNonNull(this) { handleAsyncResponse(it.status) } viewModel.communicationMediums.observeNonNull(this) { handleCommunicationMediums(it) } @@ -299,14 +290,11 @@ class LoanSummaryV2Fragment : } } - private fun handleLoanBasicDetails(loanDetails: LoanBasicDetailsResponse) { - viewModel.fetchSummary(loanDetails.loanApplicationId.orEmpty()) - PreferenceManager.setStringPreference( - LOAN_APPLICATION_ID, - loanDetails.loanApplicationId.orEmpty() - ) - loanApplicationId = loanDetails.loanApplicationId - if (loanApplicationId.isNullOrBlank()) eventTracker.wrongLoanApplicationIdReceived() + private fun handleLoanBasicDetails() { + if (viewModel.getLoanApplicationId().isNotNullAndNotEmpty()) { + viewModel.fetchSummary(viewModel.getLoanApplicationId().toString()) + } + if (viewModel.getLoanApplicationId().isNullOrBlank()) eventTracker.wrongLoanApplicationIdReceived() else eventTracker.loanApplicationIdReceived() } @@ -410,8 +398,7 @@ class LoanSummaryV2Fragment : private fun applyLoan() { NaviTrackEvent.setStartTs(screenName) - val loanId = loanApplicationId - if (loanId.isNullOrBlank()) { + if (viewModel.getLoanApplicationId().isNullOrBlank()) { eventTracker.loanApplicationIdError() } else { showLoader() @@ -420,7 +407,7 @@ class LoanSummaryV2Fragment : email = binding.emailCardInputWidget.getUserInputPostValidation()?.trim() ) } else UserProfile() - viewModel.signLoanAgreement(loanId, userProfile) + viewModel.signLoanAgreement(viewModel.getLoanApplicationId().toString(), userProfile) } } @@ -668,7 +655,7 @@ class LoanSummaryV2Fragment : } private fun postSelectedEmiDate(selectedEmiDate: String, flowType: String) { - loanApplicationId?.let { + viewModel.getLoanApplicationId()?.let { showLoader() viewModel.postSelectedEmiDate(it, selectedEmiDate, flowType) } @@ -727,4 +714,5 @@ class LoanSummaryV2Fragment : val bottomSheet = InformationBottomSheet.getInstance(data) safelyShowBottomSheet(bottomSheet, InformationBottomSheet.TAG) } + }