TP-16706 | Gratification for auto debit (#5307)

* positive reinforcement landing page

* added StripWithTitleAndSubtitleWidget

* code refactoring

* corrected StripWithTitleAndSubtitleWidgetLayout

* refactored AnimatedLoaderWithTextWidget

* TP-17046 (#5142)

* code refactoring

* TP-15714 (#5146)

* corrected lottie

* added sound in AnimatedLoaderWithTextWidget

* corrected LottieFieldData

* TP-17098 (#5155)

* TP-17231 (#5188)

Co-authored-by: Shubhanjay Varma <shubhanjay.varma@navi.com>

* corrected LottieAnimation

* added onCLickListener on bottom of CibilScoreWidgetLayout

* added StripWithTitleAndSubtitleWidget to DashboardHolderFactoryImpl

* corrected Entry Point widget

* corrected import of TYPE constant

* handled backCta redirection from rewardsDashboard

* handled back redirection from IntermediateV2Activity

* removed commented code

* LE_SECONDARY patch

* added EaseInOutQuintInterpolator and null check on back redirection

* removed differences from development

* removed LE secondary patch

* added correct sound and removed incorrect sound

* added new sound

* corrected easeInOutQuint interpolator

* handled NaviWidgetClickWithActionData in PaymentBehaviourFragment

* removed mock.json data and unused imports

* addressed comments on the pull request

* resolved CibilScoreWidgetLayout breaking bug

* corrected value of serializedName from backgroundTint to bgColor

* changed stripText to text and stripBackgroundColor to bgColor

* corrected stripText

* added bottom animation

* removed unneccessary line

* code refactor

* corrected redirection from csat entry point

* TP-16706

* corrected margins

* addressed comments on the pull request

* added copyright messages for new files

* Updated HOME_FEATURE value

* corrected scale of the confetti lottie

* positive reinforcement visibility fix

* applied spotless suggestion

Co-authored-by: Shubhanjay Varma <shubhanjay.varma@navi.com>
This commit is contained in:
amit kumar
2023-03-01 19:25:11 +05:30
committed by GitHub Enterprise
parent 7066fb7614
commit db1ccaae4b
5 changed files with 57 additions and 21 deletions

View File

@@ -39,7 +39,8 @@ import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.model.*
import com.navi.base.sharedpref.PreferenceManager
import com.navi.base.utils.AppLaunchUtils
import com.navi.base.utils.AppLaunchUtils.HOME_FEATURE_LAUNCH
import com.navi.base.utils.AppLaunchUtils.HOME_FEATURE_NEGATIVE_REINFORCEMENT
import com.navi.base.utils.AppLaunchUtils.HOME_FEATURE_POSITIVE_REINFORCEMENT
import com.navi.base.utils.AppLaunchUtils.HOME_ITEMS_LAUNCH
import com.navi.base.utils.BaseUtils
import com.navi.common.constants.GI
@@ -307,12 +308,18 @@ class HomeFragment : PaymentBaseFragment(), WidgetCallback, PlayStoreActionListe
private fun initObservers() {
viewModel.appStoriesData.observeNonNull(viewLifecycleOwner) { toShowAvatar() }
viewModel.homeFeatures.observeNonNull(viewLifecycleOwner) {
if (it.negativeReinforcement?.enable == true && it.negativeReinforcement.cta.isNotNull() && AppLaunchUtils.isLandingFirstTimeAfterAppOpen(
HOME_FEATURE_LAUNCH
)
if (it.ppeFeatures?.positiveReinforcement?.cta != null
&& it.ppeFeatures.positiveReinforcement.enable == true
&& AppLaunchUtils.isLandingFirstTimeAfterAppOpen(HOME_FEATURE_POSITIVE_REINFORCEMENT)
) {
AppLaunchUtils.setAppOpenStatus(HOME_FEATURE_LAUNCH)
onClick(it.negativeReinforcement.cta!!)
AppLaunchUtils.setAppOpenStatus(HOME_FEATURE_POSITIVE_REINFORCEMENT)
onClick(it.ppeFeatures.positiveReinforcement.cta)
} else if (it.ppeFeatures?.negativeReinforcement?.cta != null
&& it.ppeFeatures.negativeReinforcement.enable == true
&& AppLaunchUtils.isLandingFirstTimeAfterAppOpen(HOME_FEATURE_NEGATIVE_REINFORCEMENT)
) {
AppLaunchUtils.setAppOpenStatus(HOME_FEATURE_NEGATIVE_REINFORCEMENT)
onClick(it.ppeFeatures.negativeReinforcement.cta)
} else if (it.appRatingPopup?.enable == true) {
val requestData =
RateDataRequest(

View File

@@ -9,15 +9,13 @@ package com.naviapp.models.response
import com.google.gson.annotations.SerializedName
import com.navi.base.model.CtaData
import com.navi.base.model.LineItem
import com.naviapp.utils.LOAN_ACCOUNT_NUMBER
data class HomeFeatureResponse(
@SerializedName("appRatingPopup") var appRatingPopup: AppRatingPopup? = null,
@SerializedName("appSharePopup") var appSharePopup: AppSharePopup? = null,
@SerializedName("survey") val survey : NetPromoterScoreResponse? = null,
@SerializedName("negativeReinforcement") val negativeReinforcement: NegativeReinforcementPopup? = null
@SerializedName("survey") val survey: NetPromoterScoreResponse? = null,
@SerializedName("ppe") val ppeFeatures: PPEFeature? = null
)
data class AppShareBannerWidget(
@@ -52,9 +50,16 @@ data class CardData(
var cta: CtaData? = null
)
data class NegativeReinforcementPopup(
data class PPEFeaturePopupData(
@SerializedName("enable")
val enable: Boolean? = null,
@SerializedName("cta")
val cta: CtaData? = null
)
data class PPEFeature(
@SerializedName("positiveReinforcement")
val positiveReinforcement: PPEFeaturePopupData? = null,
@SerializedName("negativeReinforcement")
val negativeReinforcement: PPEFeaturePopupData? = null
)

View File

@@ -35,6 +35,7 @@ import com.navi.naviwidgets.models.NaviWidget
import com.navi.naviwidgets.models.ToolBarWidget
import com.navi.naviwidgets.models.response.AnimatedLoaderWithTextWidget
import com.navi.naviwidgets.models.response.GenericWidgetResponse
import com.navi.naviwidgets.models.response.LottieFieldData
import com.navi.naviwidgets.models.response.PaymentFooterWidget
import com.navi.naviwidgets.utils.setBackgroundColor
import com.navi.naviwidgets.utils.toCtaData
@@ -62,6 +63,7 @@ import com.naviapp.utils.Constants.POSITIVE
import com.naviapp.utils.Constants.REDIRECTED_FROM_POSITIVE_REINFORCEMENT
import com.naviapp.utils.Constants.TRUE
import com.naviapp.utils.Constants.TYPE
import com.naviapp.utils.Constants.LOTTIE_CODE
import com.naviapp.utils.LOAN_ACCOUNT_NUMBER
import com.naviapp.utils.slideInTop
import dagger.hilt.android.AndroidEntryPoint
@@ -251,18 +253,38 @@ class PaymentBehaviourFragment : PartPrePaymentBaseFragment(), WidgetCallback,
}
is GenericWidgetState.Update -> {
binding.shimmerLayout.visibility = View.GONE
viewState.data?.run {
val naviWidget = content?.get(0)
if (naviWidget is AnimatedLoaderWithTextWidget) {
handleAnimatedLoaderWithTextWidget(naviWidget, this)
} else {
setPositiveReinforcementViewState(viewState.data)
}
arguments?.getString(LOTTIE_CODE)?.let {
showLoader(
lottieFieldData = LottieFieldData(
lottieCode = it,
infiniteRepeat = false,
repeatCount = 0
),
onAnimationEnd = {
handlePositiveReinforcementState(viewState)
hideLoader()
}
)
} ?: kotlin.run {
handlePositiveReinforcementState(viewState)
}
}
}
}
private fun handlePositiveReinforcementState(viewState: GenericWidgetState.Update) {
viewState.data?.run {
val naviWidget = content?.getOrNull(0)
if (naviWidget is AnimatedLoaderWithTextWidget) {
handleAnimatedLoaderWithTextWidget(naviWidget, this)
} else {
binding.mainLayout.visibility = View.VISIBLE
setPositiveReinforcementViewState(viewState.data)
}
}
}
private fun handleAnimatedLoaderWithTextWidget(
naviWidget: AnimatedLoaderWithTextWidget, response: GenericWidgetResponse
) {
@@ -568,4 +590,4 @@ class PaymentBehaviourFragment : PartPrePaymentBaseFragment(), WidgetCallback,
override fun onClickBottomSheet(naviClickAction: NaviClickAction) {
onClick(naviClickAction)
}
}
}

View File

@@ -202,7 +202,7 @@ object Constants {
const val PL_PP_CHANGE_BANK_JOURNEY = "PL_PP_CHANGE_BANK_JOURNEY"
const val AUTO_DEBIT_SHOWN = "AUTO_DEBIT_SHOWN"
const val DELIVERED = "DELIVERED"
const val HOME_FEATURE = "IN_APP_UPDATE,SURVEY,APP_SHARE,NEGATIVE_REINFORCEMENT_LE"
const val HOME_FEATURE = "IN_APP_UPDATE,SURVEY,APP_SHARE,PPE"
const val RATING_COUNT = 5.0f
const val ERROR_CODE_CUSTOMER_DATA_MISMATCH = "E_CUSTOMER_DATA_MISMATCH"
const val DOWNLOAD = "DOWNLOAD"
@@ -345,6 +345,7 @@ object Constants {
const val ANDROID_WHATSAPP_LOGIN_NUMBER = "ANDROID_WHATSAPP_LOGIN_NUMBER"
const val ANDROID_WHATSAPP_LOGIN_MESSAGE = "ANDROID_WHATSAPP_LOGIN_MESSAGE"
const val ENABLE_LOGIN_V2_ON_WHATSAPP_LOGIN = "ENABLE_LOGIN_V2_ON_WHATSAPP_LOGIN"
const val LOTTIE_CODE = "LOTTIE_CODE"
const val ENABLE_OTP_LOGIN_ON_WHATSAPP_PAGE = "ENABLE_OTP_LOGIN_ON_WHATSAPP_PAGE"
const val DYNAMIC_CTA = "dynamic_cta"
const val UPI = "UPI"

View File

@@ -14,7 +14,8 @@ import com.navi.base.sharedpref.PreferenceManager
object AppLaunchUtils {
private const val APP_RELAUNCHED = "APP_RELAUNCHED"
const val HOME_ITEMS_LAUNCH = "HOME_ITEMS_LAUNCH"
const val HOME_FEATURE_LAUNCH = "HOME_FEATURE_LAUNCH"
const val HOME_FEATURE_POSITIVE_REINFORCEMENT = "HOME_FEATURE_POSITIVE_REINFORCEMENT"
const val HOME_FEATURE_NEGATIVE_REINFORCEMENT = "HOME_FEATURE_NEGATIVE_REINFORCEMENT"
const val TRUE = "true"
const val FALSE = "false"