NTP-22076 | Annual Renewal | Pre-quote screen loader fixes (#14388)
This commit is contained in:
committed by
GitHub
parent
231aee1810
commit
4ed2cec085
@@ -9,6 +9,7 @@ package com.navi.insurance.common.widgets
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.insurance.common.custom_view.addOnMultipleClicksHandler
|
||||
@@ -16,6 +17,7 @@ import com.navi.insurance.common.models.Action
|
||||
import com.navi.insurance.common.models.FooterWithTwoButtonNewData
|
||||
import com.navi.insurance.common.models.NaviWidgetData
|
||||
import com.navi.insurance.databinding.FooterWithTwoButtonNewWidgetBinding
|
||||
import com.navi.insurance.util.Constants.BUTTON_LOADER_LOTTIE_URL
|
||||
|
||||
class FooterWithTwoButtonNewWidget
|
||||
@JvmOverloads
|
||||
@@ -36,7 +38,7 @@ constructor(context: Context, attrs: AttributeSet? = null) : BaseNaviWidgetView(
|
||||
this.footerWithTwoButtonData = naviWidgetData as? FooterWithTwoButtonNewData
|
||||
|
||||
this@FooterWithTwoButtonNewWidget.binding
|
||||
?.primaryButton
|
||||
?.primaryButtonText
|
||||
?.setData(footerWithTwoButtonData?.buttonList?.getOrNull(0))
|
||||
|
||||
footerWithTwoButtonData?.buttonList?.getOrNull(0)?.cta?.let { cta ->
|
||||
@@ -58,7 +60,7 @@ constructor(context: Context, attrs: AttributeSet? = null) : BaseNaviWidgetView(
|
||||
setOnClickListener(null)
|
||||
}
|
||||
} else if (footerWithTwoButtonData?.isDisabled == false) {
|
||||
this@FooterWithTwoButtonNewWidget.binding?.primaryButton?.apply {
|
||||
this@FooterWithTwoButtonNewWidget.binding?.primaryButtonText?.apply {
|
||||
alpha = 1F
|
||||
addOnMultipleClicksHandler {
|
||||
ctaDataCallback?.invoke(cta)
|
||||
@@ -67,4 +69,13 @@ constructor(context: Context, attrs: AttributeSet? = null) : BaseNaviWidgetView(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun handleLoader(showPrimaryButtonLoader: Boolean = false) {
|
||||
binding?.primaryButtonText?.isVisible = !showPrimaryButtonLoader
|
||||
binding?.primaryButtonLottie?.let { lottieView ->
|
||||
lottieView.isVisible = showPrimaryButtonLoader
|
||||
lottieView.progress = 0f
|
||||
lottieView.setAnimationFromUrl(BUTTON_LOADER_LOTTIE_URL)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Toast
|
||||
import androidx.core.view.children
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.databinding.ViewDataBinding
|
||||
@@ -24,6 +25,7 @@ import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.CtaType
|
||||
import com.navi.base.utils.isNull
|
||||
import com.navi.common.network.models.ErrorMessage
|
||||
import com.navi.common.utils.setStatusBarColor
|
||||
import com.navi.design.utils.isValidHexColor
|
||||
import com.navi.insurance.R
|
||||
import com.navi.insurance.analytics.InsuranceAnalyticsConstants
|
||||
@@ -38,6 +40,7 @@ import com.navi.insurance.common.models.CardStateData
|
||||
import com.navi.insurance.common.models.FooterWithLeftRightButtonData
|
||||
import com.navi.insurance.common.models.FooterWithTwoButtonNewData
|
||||
import com.navi.insurance.common.models.NaviActionType
|
||||
import com.navi.insurance.common.models.NaviToolbarViewData
|
||||
import com.navi.insurance.common.models.NaviWidget
|
||||
import com.navi.insurance.common.models.NaviWidgetData
|
||||
import com.navi.insurance.common.models.NaviWidgetType
|
||||
@@ -48,6 +51,7 @@ import com.navi.insurance.common.util.IdProvider
|
||||
import com.navi.insurance.common.util.NavigationHandler
|
||||
import com.navi.insurance.common.util.UiControllerUtil
|
||||
import com.navi.insurance.common.widgets.BaseNaviWidgetView
|
||||
import com.navi.insurance.common.widgets.FooterWithTwoButtonNewWidget
|
||||
import com.navi.insurance.common.widgets.replaceLayout
|
||||
import com.navi.insurance.databinding.FragmentRenewalFormBasedBinding
|
||||
import com.navi.insurance.formbase.pre_purchase.FormBasedFragment
|
||||
@@ -110,6 +114,7 @@ class RenewalFormBasedFragment :
|
||||
private var currentTransition: String? = null
|
||||
|
||||
private var isBackTransitionInProgress = false
|
||||
private var backCta: CtaData? = null
|
||||
|
||||
private var currentError: String? = null
|
||||
private var formPageResponse: FormPageResponse? = null
|
||||
@@ -130,7 +135,9 @@ class RenewalFormBasedFragment :
|
||||
shouldHandleBackPress &&
|
||||
arguments?.getString(ARG_STATUS) != RenewalDetails.STATUS_SUCCESS
|
||||
) {
|
||||
if (isBackTransitionInProgress.not()) {
|
||||
if (backCta?.type == CtaType.RENEWAL_BACK_BOTTOM_SHEET.value) {
|
||||
handleCta(backCta)
|
||||
} else if (isBackTransitionInProgress.not()) {
|
||||
processPrevious()
|
||||
}
|
||||
return true
|
||||
@@ -157,6 +164,7 @@ class RenewalFormBasedFragment :
|
||||
container,
|
||||
false,
|
||||
)
|
||||
activity?.setStatusBarColor(R.color.white)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
@@ -244,19 +252,18 @@ class RenewalFormBasedFragment :
|
||||
binding.retryContainer.isVisible = true
|
||||
shouldHandleBackPress = false
|
||||
currentError = viewState.errorTag
|
||||
binding.progressBar.isVisible = false
|
||||
toggleFooterLoader(false)
|
||||
setContentVisibility(false)
|
||||
}
|
||||
is RenewalFormPrevPageResponseState.Loading -> {
|
||||
shouldHandleBackPress = false
|
||||
binding.progressBar.isVisible = true
|
||||
setContentVisibility(false)
|
||||
toggleFooterLoader(true)
|
||||
binding.retryContainer.isVisible = false
|
||||
}
|
||||
is RenewalFormPrevPageResponseState.Success -> {
|
||||
shouldHandleBackPress = true
|
||||
isBackTransitionInProgress = false
|
||||
binding.progressBar.isVisible = false
|
||||
toggleFooterLoader(false)
|
||||
setContentVisibility(true)
|
||||
handleCta(viewState.data?.cta)
|
||||
}
|
||||
@@ -276,23 +283,23 @@ class RenewalFormBasedFragment :
|
||||
)
|
||||
}
|
||||
setContentVisibility(true)
|
||||
binding.progressBar.isVisible = false
|
||||
toggleFooterLoader(false)
|
||||
}
|
||||
is RenewalFormNextPageResponseState.Error -> {
|
||||
shouldHandleBackPress = false
|
||||
currentError = viewState.errorTag
|
||||
binding.retryContainer.isVisible = true
|
||||
binding.progressBar.isVisible = false
|
||||
toggleFooterLoader(false)
|
||||
setContentVisibility(false)
|
||||
}
|
||||
is RenewalFormNextPageResponseState.Loading -> {
|
||||
shouldHandleBackPress = false
|
||||
binding.progressBar.isVisible = true
|
||||
setContentVisibility(false)
|
||||
toggleFooterLoader(true)
|
||||
binding.retryContainer.isVisible = false
|
||||
}
|
||||
is RenewalFormNextPageResponseState.Success -> {
|
||||
shouldHandleBackPress = true
|
||||
toggleFooterLoader(false)
|
||||
handleCta(viewState.data?.cta)
|
||||
}
|
||||
else -> Unit
|
||||
@@ -343,6 +350,8 @@ class RenewalFormBasedFragment :
|
||||
}
|
||||
}
|
||||
viewState.data?.header?.getOrNull(0)?.widgetData?.run {
|
||||
val toolBarData: NaviToolbarViewData? = this as? NaviToolbarViewData
|
||||
backCta = toolBarData?.leftIcon?.cta
|
||||
updateContainer(this, binding.headerContainer)
|
||||
}
|
||||
viewState.data?.footer?.getOrNull(1)?.widgetData?.run {
|
||||
@@ -454,18 +463,18 @@ class RenewalFormBasedFragment :
|
||||
QuoteGenerationState.Init -> {}
|
||||
QuoteGenerationState.Loading -> {
|
||||
shouldHandleBackPress = false
|
||||
binding.progressBar.isVisible = true
|
||||
toggleFooterLoader(true)
|
||||
binding.retryContainer.isVisible = false
|
||||
setContentVisibility(false)
|
||||
}
|
||||
is QuoteGenerationState.Success -> {
|
||||
handleCta(viewState.data.cta)
|
||||
binding.progressBar.isVisible = false
|
||||
toggleFooterLoader(false)
|
||||
setContentVisibility(true)
|
||||
}
|
||||
is QuoteGenerationState.Error -> {
|
||||
setContentVisibility(true)
|
||||
binding.progressBar.isVisible = false
|
||||
toggleFooterLoader(false)
|
||||
Toast.makeText(
|
||||
context,
|
||||
getString(R.string.something_went_wrong),
|
||||
@@ -509,6 +518,14 @@ class RenewalFormBasedFragment :
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleFooterLoader(isLoading: Boolean) {
|
||||
(binding.footerContainer1.children.firstOrNull() as? FooterWithTwoButtonNewWidget)
|
||||
?.handleLoader(showPrimaryButtonLoader = isLoading)
|
||||
(binding.footerContainer2.children.firstOrNull() as? FooterWithTwoButtonNewWidget)
|
||||
?.handleLoader(showPrimaryButtonLoader = isLoading)
|
||||
binding.root.isClickable = !isLoading
|
||||
}
|
||||
|
||||
override fun handleCtaFromBottomSheet(cta: CtaData?) {
|
||||
handleCta(cta)
|
||||
}
|
||||
|
||||
@@ -280,6 +280,8 @@ object Constants {
|
||||
const val ERROR_CTA = "errorCta"
|
||||
const val HOME_VISIT_SCREEN = "home_visit_screen"
|
||||
const val RESOURCE_NOT_FOUND = "Resource not found"
|
||||
const val BUTTON_LOADER_LOTTIE_URL =
|
||||
"https://public-assets.prod.navi-sa.in/home_uitron/cta_loader.json"
|
||||
|
||||
// This is required for animating a component for Health risk score
|
||||
val numberConstant: List<String> =
|
||||
|
||||
@@ -34,21 +34,37 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/headerText" />
|
||||
|
||||
<Button
|
||||
<FrameLayout
|
||||
android:id="@+id/primaryButton"
|
||||
android:layout_height="@dimen/dp_44"
|
||||
style="@style/ButtonFontStylePurple"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="@dimen/dp_48"
|
||||
android:layout_marginHorizontal="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_marginBottom="@dimen/dp_32"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:layout_weight="1"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/headerText"
|
||||
tools:text="@string/okay_got_it"
|
||||
tools:visibility="visible" />
|
||||
tools:visibility="visible"
|
||||
android:background="@drawable/button_violet_state_24dp_radius">
|
||||
<Button
|
||||
android:id="@+id/primary_button_text"
|
||||
style="@style/ButtonFontStylePurple"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
tools:text="Next" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/primary_button_lottie"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_repeatMode="restart"
|
||||
android:visibility="gone"/>
|
||||
</FrameLayout>
|
||||
|
||||
</com.navi.insurance.common.widgets.FooterWithTwoButtonNewWidget>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user