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:
committed by
GitHub Enterprise
parent
7066fb7614
commit
db1ccaae4b
@@ -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(
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user