diff --git a/navi-rr/src/main/java/com/navi/rr/rewards/ui/bottomsheet/RewardsBottomsSheetView.kt b/navi-rr/src/main/java/com/navi/rr/rewards/ui/bottomsheet/RewardsBottomsSheetView.kt index 496c79068c..49172d5188 100644 --- a/navi-rr/src/main/java/com/navi/rr/rewards/ui/bottomsheet/RewardsBottomsSheetView.kt +++ b/navi-rr/src/main/java/com/navi/rr/rewards/ui/bottomsheet/RewardsBottomsSheetView.kt @@ -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 } } } -} \ No newline at end of file +} diff --git a/navi-rr/src/main/java/com/navi/rr/rewards/ui/fragment/RewardsDetailFragment.kt b/navi-rr/src/main/java/com/navi/rr/rewards/ui/fragment/RewardsDetailFragment.kt index 20243748b0..3b5adb32b4 100644 --- a/navi-rr/src/main/java/com/navi/rr/rewards/ui/fragment/RewardsDetailFragment.kt +++ b/navi-rr/src/main/java/com/navi/rr/rewards/ui/fragment/RewardsDetailFragment.kt @@ -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 diff --git a/navi-rr/src/main/res/layout/layout_rewards_bottomsheet.xml b/navi-rr/src/main/res/layout/layout_rewards_bottomsheet.xml index 8246b5ebe1..0b82d44054 100644 --- a/navi-rr/src/main/res/layout/layout_rewards_bottomsheet.xml +++ b/navi-rr/src/main/res/layout/layout_rewards_bottomsheet.xml @@ -20,8 +20,8 @@ { 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 { diff --git a/navi-widgets/src/main/java/com/navi/naviwidgets/models/response/RewardWidget.kt b/navi-widgets/src/main/java/com/navi/naviwidgets/models/response/RewardWidget.kt index 8630a65cb3..251723b181 100644 --- a/navi-widgets/src/main/java/com/navi/naviwidgets/models/response/RewardWidget.kt +++ b/navi-widgets/src/main/java/com/navi/naviwidgets/models/response/RewardWidget.kt @@ -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 diff --git a/navi-widgets/src/main/java/com/navi/naviwidgets/utils/LottieEnums.kt b/navi-widgets/src/main/java/com/navi/naviwidgets/utils/LottieEnums.kt index 3a0c326da1..43b9c080a1 100644 --- a/navi-widgets/src/main/java/com/navi/naviwidgets/utils/LottieEnums.kt +++ b/navi-widgets/src/main/java/com/navi/naviwidgets/utils/LottieEnums.kt @@ -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 } diff --git a/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/RewardsWidgetLayout.kt b/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/RewardsWidgetLayout.kt index 576af09917..52d769940e 100644 --- a/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/RewardsWidgetLayout.kt +++ b/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/RewardsWidgetLayout.kt @@ -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 diff --git a/navi-widgets/src/main/res/drawable/ic_rewards_blocked_corner.xml b/navi-widgets/src/main/res/drawable/ic_rewards_blocked_corner.xml new file mode 100644 index 0000000000..dafcdf81f6 --- /dev/null +++ b/navi-widgets/src/main/res/drawable/ic_rewards_blocked_corner.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/navi-widgets/src/main/res/raw/rewards_blocked_large.lottie b/navi-widgets/src/main/res/raw/rewards_blocked_large.lottie new file mode 100644 index 0000000000..f822089f40 Binary files /dev/null and b/navi-widgets/src/main/res/raw/rewards_blocked_large.lottie differ diff --git a/navi-widgets/src/main/res/raw/rewards_blocked_small.lottie b/navi-widgets/src/main/res/raw/rewards_blocked_small.lottie new file mode 100644 index 0000000000..61105e8aed Binary files /dev/null and b/navi-widgets/src/main/res/raw/rewards_blocked_small.lottie differ