Feature/rewards blocked state handling (#6955)
* TP-33169 | Handle rewards blocked state * TP-33169 | Mock * TP-32564 | Removed unused files * TP-35536 | Spotless apply * TP-35536 | Replaced lottie json files with dotLottie file --------- Co-authored-by: adarshs <adarsh.s@navi.com> Co-authored-by: Girish Suragani <girish.suragani@navi.com>
This commit is contained in:
committed by
GitHub
parent
de5b342597
commit
f021885992
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.rr.rewards.ui.bottomsheet
|
||||
|
||||
import android.content.Context
|
||||
@@ -5,11 +12,13 @@ import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import com.navi.base.model.ImageDetail
|
||||
import com.navi.base.model.NaviWidgetClickWithActionData
|
||||
import com.navi.design.utils.CornerRadius
|
||||
import com.navi.design.utils.getNaviDrawableFromBackend
|
||||
import com.navi.design.utils.parseColorSafe
|
||||
import com.navi.design.utils.spannedText
|
||||
import com.navi.naviwidgets.extensions.showWhenDataIsAvailable
|
||||
import com.navi.naviwidgets.models.response.RewardInfo
|
||||
import com.navi.rr.R
|
||||
import com.navi.rr.databinding.LayoutRewardsBottomsheetBinding
|
||||
@@ -35,6 +44,9 @@ constructor(parentContext: Context, attrs: AttributeSet? = null, defStyleAttr: I
|
||||
) {
|
||||
this.rewardInfo = rewardInfo
|
||||
binding.apply {
|
||||
rewardInfo?.imageUrl?.let { url ->
|
||||
ivIcon.showWhenDataIsAvailable(imageDetail = ImageDetail(url = url))
|
||||
}
|
||||
tvTitle.text = rewardInfo?.title?.text.spannedText(
|
||||
context,
|
||||
rewardInfo?.title?.span
|
||||
@@ -79,4 +91,4 @@ constructor(parentContext: Context, attrs: AttributeSet? = null, defStyleAttr: I
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,8 +13,8 @@ import android.view.View
|
||||
import android.view.View.GONE
|
||||
import android.view.View.VISIBLE
|
||||
import androidx.core.view.isVisible
|
||||
import com.navi.base.deeplink.DeepLinkManager
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.navi.base.deeplink.DeepLinkManager
|
||||
import com.navi.base.model.ActionData
|
||||
import com.navi.base.model.ImageDetail
|
||||
import com.navi.base.model.NaviWidgetClickWithActionData
|
||||
@@ -24,7 +24,6 @@ import com.navi.common.model.RewardBottomSheetType
|
||||
import com.navi.common.model.RewardState
|
||||
import com.navi.common.ui.dialog.BaseDialogFragment
|
||||
import com.navi.common.utils.Constants.WEB_URL
|
||||
import com.navi.rr.utils.Constants.REWARDS_UPI
|
||||
import com.navi.common.utils.toCtaData
|
||||
import com.navi.design.utils.CornerRadius
|
||||
import com.navi.design.utils.getNaviDrawableFromBackend
|
||||
@@ -43,6 +42,7 @@ import com.navi.rr.rewards.ui.bottomsheet.RewardsPLUnlockDetailsBottomSheetView
|
||||
import com.navi.rr.rewards.ui.bottomsheet.RewardsUnLockDetailsBottomSheetView
|
||||
import com.navi.rr.rewards.viewmodels.RewardDashboardSharedVM
|
||||
import com.navi.rr.utils.Constants.REWARDS_DETAILS_SCREEN
|
||||
import com.navi.rr.utils.Constants.REWARDS_UPI
|
||||
import com.navi.rr.utils.NaviRRAnalytics
|
||||
|
||||
class RewardsDetailFragment :
|
||||
@@ -135,22 +135,26 @@ class RewardsDetailFragment :
|
||||
ImageDetail(url = rewardsWidgetData?.rewardsInfo?.largeIconUrl)
|
||||
)
|
||||
if (rewardsWidgetData?.rewardsInfo?.showCornerImg == true) {
|
||||
ivCornerImg.setImageResource(
|
||||
when (rewardsWidgetData?.rewardsInfo?.rewardType) {
|
||||
RewardType.GOLD.name -> {
|
||||
ivRewardIcon.isVisible = false
|
||||
com.navi.naviwidgets.R.drawable.ic_rewards_detail_corner
|
||||
if (rewardsWidgetData?.rewardsInfo?.isBlocked == true) {
|
||||
ivCornerImg.setImageResource(com.navi.naviwidgets.R.drawable.ic_rewards_blocked_corner)
|
||||
} else {
|
||||
ivCornerImg.setImageResource(
|
||||
when (rewardsWidgetData?.rewardsInfo?.rewardType) {
|
||||
RewardType.GOLD.name -> {
|
||||
ivRewardIcon.isVisible = false
|
||||
com.navi.naviwidgets.R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
RewardType.CASH.name -> {
|
||||
ivRewardIcon.isVisible = false
|
||||
com.navi.naviwidgets.R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
else -> {
|
||||
ivRewardIcon.isVisible = true
|
||||
com.navi.naviwidgets.R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
}
|
||||
RewardType.CASH.name -> {
|
||||
ivRewardIcon.isVisible = false
|
||||
com.navi.naviwidgets.R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
else -> {
|
||||
ivRewardIcon.isVisible = true
|
||||
com.navi.naviwidgets.R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
ivRewardLottie.showWhenDataIsAvailable(
|
||||
lottieName = rewardsWidgetData?.rewardsInfo?.lottieFileName
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/ivIcon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="@dimen/dp_24"
|
||||
android:layout_height="@dimen/dp_24"
|
||||
android:layout_marginTop="@dimen/layout_dp_16"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
@@ -45,6 +45,7 @@
|
||||
android:layout_marginTop="@dimen/layout_dp_8"
|
||||
android:layout_marginBottom="@dimen/layout_dp_32"
|
||||
android:lineSpacingExtra="@dimen/layout_dp_4"
|
||||
android:autoLink="email"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvTitle"
|
||||
|
||||
@@ -39,14 +39,12 @@ import com.airbnb.lottie.LottieAnimationView
|
||||
import com.airbnb.lottie.LottieCompositionFactory
|
||||
import com.airbnb.lottie.LottieDrawable
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.navi.base.model.ActionData
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.DrawableData
|
||||
import com.navi.base.model.ImageDetail
|
||||
import com.navi.base.utils.*
|
||||
import com.navi.design.editview.FormEditText
|
||||
import com.navi.design.font.FontWeightEnum
|
||||
import com.navi.design.textview.model.TextWithStyle
|
||||
import com.navi.design.utils.*
|
||||
import com.navi.design.utils.CustomTypefaceSpan
|
||||
@@ -1231,6 +1229,12 @@ fun LottieAnimationView.showWhenDataIsAvailable(
|
||||
LottieEnums.DIGILOCKER_SUCCESS.name -> {
|
||||
setAnimation(R.raw.digilocker_success)
|
||||
}
|
||||
LottieEnums.REWARDS_BLOCKED_POPUP_COIN.name -> {
|
||||
setAnimation(R.raw.rewards_blocked_large)
|
||||
}
|
||||
LottieEnums.MY_REWARDS_BLOCKED_COIN.name -> {
|
||||
setAnimation(R.raw.rewards_blocked_small)
|
||||
}
|
||||
else -> {
|
||||
isInAppLottie = false
|
||||
CoroutineScope(Dispatchers.Main).launch {
|
||||
|
||||
@@ -79,7 +79,9 @@ data class RewardsInfo(
|
||||
@SerializedName("lottieFileName")
|
||||
val lottieFileName: String? = null,
|
||||
@SerializedName("lottieFileNameMyRewards")
|
||||
val lottieFileNameMyRewards: String? = null
|
||||
val lottieFileNameMyRewards: String? = null,
|
||||
@SerializedName("isBlocked")
|
||||
val isBlocked: Boolean? = false
|
||||
) : Serializable, Parcelable
|
||||
|
||||
@Parcelize
|
||||
@@ -129,7 +131,9 @@ data class RewardInfo(
|
||||
@SerializedName("infoText")
|
||||
val infoText: NaviTextComponent? = null,
|
||||
@SerializedName("actionData")
|
||||
val actionData: ActionData? = null
|
||||
val actionData: ActionData? = null,
|
||||
@SerializedName("imageUrl")
|
||||
val imageUrl: String? = null
|
||||
) : Serializable, Parcelable
|
||||
|
||||
@Parcelize
|
||||
|
||||
@@ -85,5 +85,7 @@ enum class LottieEnums {
|
||||
NAVI_REWARDS_GOLD_V2,
|
||||
NAVI_REWARDS_GOLD_DISABLED_V2,
|
||||
GOLD_REWARD_CONFETTI,
|
||||
DIGILOCKER_SUCCESS
|
||||
DIGILOCKER_SUCCESS,
|
||||
REWARDS_BLOCKED_POPUP_COIN,
|
||||
MY_REWARDS_BLOCKED_COIN
|
||||
}
|
||||
|
||||
@@ -14,8 +14,6 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.navi.base.model.ImageDetail
|
||||
import com.navi.base.utils.isNull
|
||||
import com.navi.design.utils.CornerRadius
|
||||
import com.navi.design.utils.deviceWidth
|
||||
import com.navi.design.utils.dpToPxInInt
|
||||
import com.navi.design.utils.getNaviDrawableFromBackend
|
||||
import com.navi.design.utils.parseColorSafe
|
||||
import com.navi.design.utils.spannedText
|
||||
@@ -71,19 +69,23 @@ class RewardsWidgetLayout @JvmOverloads constructor(
|
||||
tvRewardPrice.showWhenDataIsAvailable(showText = info.widgetData.rewardsInfo?.value)
|
||||
tvRewardType.showWhenDataIsAvailable(showText = info.widgetData.rewardsInfo?.label)
|
||||
if (info.widgetData.rewardsInfo?.showCornerImg == true) {
|
||||
ivCornerImg.setImageResource(
|
||||
when (info.widgetData.rewardsInfo.rewardType) {
|
||||
RewardType.GOLD.name -> {
|
||||
R.drawable.ic_rewards_detail_corner
|
||||
if (info.widgetData.rewardsInfo.isBlocked == true) {
|
||||
ivCornerImg.setImageResource(R.drawable.ic_rewards_blocked_corner)
|
||||
} else {
|
||||
ivCornerImg.setImageResource(
|
||||
when (info.widgetData.rewardsInfo.rewardType) {
|
||||
RewardType.GOLD.name -> {
|
||||
R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
RewardType.CASH.name -> {
|
||||
R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
else -> {
|
||||
R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
}
|
||||
RewardType.CASH.name -> {
|
||||
R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
else -> {
|
||||
R.drawable.ic_rewards_detail_corner
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
if(info.widgetData.rewardsInfo?.smallIconUrl.isNull()) {
|
||||
ivRewardIcon.visibility = View.GONE
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<!--
|
||||
~ /*
|
||||
~ *
|
||||
~ * * Copyright © 2023 by Navi Technologies Private Limited
|
||||
~ * * All rights reserved. Strictly confidential
|
||||
~ *
|
||||
~ */
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="95dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="95"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:fillColor="#CAC7C7"
|
||||
android:pathData="M-0,63.642C-0,55.284 2.442,47.008 7.188,39.287C11.934,31.566 18.89,24.55 27.659,18.64C36.429,12.731 46.839,8.043 58.297,4.844C69.754,1.646 82.034,-0 94.436,0V47.218C94.436,56.289 87.082,63.642 78.012,63.642H-0Z" />
|
||||
</vector>
|
||||
|
||||
BIN
navi-widgets/src/main/res/raw/rewards_blocked_large.lottie
Normal file
BIN
navi-widgets/src/main/res/raw/rewards_blocked_large.lottie
Normal file
Binary file not shown.
BIN
navi-widgets/src/main/res/raw/rewards_blocked_small.lottie
Normal file
BIN
navi-widgets/src/main/res/raw/rewards_blocked_small.lottie
Normal file
Binary file not shown.
Reference in New Issue
Block a user