From 0fac143d973fadd4f7b0b54e54b8c3c57b64b506 Mon Sep 17 00:00:00 2001 From: Saurabh Chaudhary Date: Mon, 25 Mar 2024 22:22:57 +0530 Subject: [PATCH] TP-61299 | crash fix (#10178) Co-authored-by: Aditya Piyush --- .../ui/CheckboxWithTitleWidgetLayout.kt | 4 ++-- .../fragment/HomeLoanFormScreenFragment.kt | 23 +++++++++++++------ .../steps/fragment/HomeLoanSearchFragment.kt | 4 ++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/checkboxwithtitle/ui/CheckboxWithTitleWidgetLayout.kt b/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/checkboxwithtitle/ui/CheckboxWithTitleWidgetLayout.kt index 36e76de8d2..301a117a9e 100644 --- a/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/checkboxwithtitle/ui/CheckboxWithTitleWidgetLayout.kt +++ b/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/checkboxwithtitle/ui/CheckboxWithTitleWidgetLayout.kt @@ -49,11 +49,11 @@ constructor( this.checkboxTv.apply { setTextFieldData(widgetModel.widgetData?.checkboxData?.title) } this.checkboxCb.apply { isChecked = widgetModel.widgetData?.checkboxData?.savedValue.toBoolean() - setOnCheckedChangeListener { _, isChecked -> + setOnClickListener { val checkboxClickAction = CheckboxClickAction( widgetId = widgetModel.widgetId, - isChecked = isChecked, + isChecked = this.isChecked, ) widgetCallback.onClick(checkboxClickAction) widgetCallback.onDataChanged(widgetModel.widgetId) diff --git a/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanFormScreenFragment.kt b/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanFormScreenFragment.kt index 4125eb10c6..4222320b35 100644 --- a/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanFormScreenFragment.kt +++ b/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanFormScreenFragment.kt @@ -12,6 +12,8 @@ import com.navi.design.R as DesignR import android.Manifest import android.content.Context import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.text.TextUtils import android.view.LayoutInflater import android.view.View @@ -782,6 +784,7 @@ class HomeLoanFormScreenFragment : private fun handleCheckboxError(showError: Boolean, widgetId: String? = EMPTY) { var checkboxClicked = false var count = 0 + var itemIndexToUpdate = 0 viewModel.formGetResponse.value?.content?.widgets?.forEach { count++ if (it.widgetId == FINANCIAL_CO_APPLICANT_CHECKBOX) { @@ -790,7 +793,7 @@ class HomeLoanFormScreenFragment : val previousErrorState = widget.widgetData?.checkboxData?.showError widget.widgetData?.checkboxData?.showError = showError if (previousErrorState != showError) { - formAdapter?.notifyItemChanged(count-1) + itemIndexToUpdate = count - 1 if (previousErrorState == true) { checkboxClicked = true } @@ -798,17 +801,23 @@ class HomeLoanFormScreenFragment : } } } - if (checkboxClicked) { - viewModel.formGetResponse.value?.content?.widgets?.forEach { - if (it.widgetId == widgetId) { - val widget = it - if (widget is CheckboxWithTitleWidget) { + Handler(Looper.getMainLooper()).post { formAdapter?.notifyItemChanged(itemIndexToUpdate) } + + var widgetIndex = -1 + viewModel.formGetResponse.value?.content?.widgets?.forEach { + if (it.widgetId == widgetId) { + widgetIndex++ + val widget = it + if (widget is CheckboxWithTitleWidget) { + if (checkboxClicked) { widget.widgetData?.checkboxData?.savedValue = true.toString() - formAdapter?.notifyDataSetChanged() + } else { + widget.widgetData?.checkboxData?.savedValue = EMPTY } } } } + if (widgetIndex != -1) Handler(Looper.getMainLooper()).post { formAdapter?.notifyItemChanged(widgetIndex) } } companion object { diff --git a/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSearchFragment.kt b/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSearchFragment.kt index 5775583fed..738cbc0998 100644 --- a/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSearchFragment.kt +++ b/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSearchFragment.kt @@ -245,8 +245,8 @@ class HomeLoanSearchFragment : HomeLoanBaseFragment(), WidgetCallback, BackListe } } - private fun processInputSearchResponseData(searchResponse: InputSearchResponse) { - searchResponse.content?.availableItems?.let { contentList -> + private fun processInputSearchResponseData(searchResponse: InputSearchResponse?) { + searchResponse?.content?.availableItems?.let { contentList -> val list: MutableList = mutableListOf() contentList.forEach { element -> element.name?.let { itemName ->