NTP-42969 | Gold first investment reward migration (#15248)

Co-authored-by: Varun Jain <varun.jain@navi.com>
This commit is contained in:
Ayushman Sharma
2025-03-05 15:20:26 +05:30
committed by GitHub
parent baeb8f43d5
commit 3e03ea40d8
5 changed files with 79 additions and 26 deletions

View File

@@ -67,6 +67,9 @@ import com.navi.gold.util.CommonUtils.updateColorsBasedOnPosition
import com.navi.gold.util.Constants
import com.navi.gold.util.Constants.CSAT_POPUP_DELAY
import com.navi.gold.util.Constants.CSAT_POPUP_DELAY_TIME
import com.navi.gold.util.Constants.GOLD_FIRST_INVESTMENT
import com.navi.gold.util.Constants.NAVI_UPI_TXN
import com.navi.gold.util.Constants.NONE
import com.navi.gold.util.Constants.REDIRECTION_SOURCE
import com.navi.gold.util.Constants.SHOW_REWARD_GRATIFICATION
import com.navi.gold.util.Constants.TYPE
@@ -256,19 +259,7 @@ class DigitalGoldTransactionActivity : BaseActivity(), WidgetCallback, CsatCompl
}
?: run {
setPageContent(widgetResponse)
widgetResponse.extraData?.screenDefinition?.let { screenDefinition ->
val gratificationFragment =
GratificationFragment.getInstance(
gratificationData = Gson().toJson(screenDefinition),
screenName = screenName,
dialogDismissListener = {
csatPopupDelay = 500
startCsat(csatPopupDelay)
},
)
safelyOpenFragment(gratificationFragment, GratificationFragment.TAG)
} ?: run { handleScratchCardResponse(widgetResponse) }
handleScratchCardResponse(widgetResponse)
}
widgetResponse.extraData?.launchToastInfo?.contentWidget?.let { toastWidgets ->
@@ -291,21 +282,38 @@ class DigitalGoldTransactionActivity : BaseActivity(), WidgetCallback, CsatCompl
viewModel.scratchCardResponse.observe(this@DigitalGoldTransactionActivity) {
scratchCardResponse ->
scratchCardSharedVm.setScratchCardScreenData(scratchCardResponse.data)
scratchCardResponse?.data?.scratchCardResponse?.rewardForm?.let { rewardForm ->
when (rewardForm) {
NONE -> {
scratchCardSharedVm.setScratchCardScreenData(scratchCardResponse.data)
val scratchCardFragment =
ScratchCardFragment.getInstance(
screenName = screenName,
dialogDismissListener = { startCsat(CSAT_POPUP_DELAY_TIME) },
)
val scratchCardFragment =
ScratchCardFragment.getInstance(
screenName = screenName,
dialogDismissListener = { startCsat(CSAT_POPUP_DELAY_TIME) },
)
safelyOpenFragment(scratchCardFragment, ScratchCardFragment.TAG)
safelyOpenFragment(scratchCardFragment, ScratchCardFragment.TAG)
}
else -> {
val gratificationFragment =
GratificationFragment.getInstance(
gratificationData =
Gson().toJson(scratchCardResponse.data.screenDefinition),
screenName = screenName,
dialogDismissListener = { startCsat(CSAT_POPUP_DELAY_TIME) },
)
safelyOpenFragment(gratificationFragment, GratificationFragment.TAG)
}
}
}
}
}
}
private fun handleScratchCardResponse(widgetResponse: WidgetResponse) {
if (widgetResponse.extraData?.isScratchCardEnabled.orFalse()) {
if (widgetResponse.extraData?.reward?.isScratchCardEnabled.orFalse()) {
fetchScratchCardData()
} else {
startCsat(CSAT_POPUP_DELAY_TIME)
@@ -313,9 +321,29 @@ class DigitalGoldTransactionActivity : BaseActivity(), WidgetCallback, CsatCompl
}
private fun fetchScratchCardData() {
intent.getStringExtra(UPI_REQUEST_ID)?.let {
viewModel.fetchScratchCardData(naviUpiRequestId = it, screenName = screenName)
intent.removeExtra(UPI_REQUEST_ID)
viewModel.digitalGoldTransactionWidgets.value?.extraData?.reward?.let { rewardData ->
val rewardEventId =
when (rewardData.scratchCardRewardType) {
GOLD_FIRST_INVESTMENT -> {
rewardData.rewardEventId
}
NAVI_UPI_TXN -> {
intent.getStringExtra(UPI_REQUEST_ID)?.let { rewardEventId ->
intent.removeExtra(UPI_REQUEST_ID)
rewardEventId
}
}
else -> {
null
}
}
rewardEventId?.let {
viewModel.fetchScratchCardOrGratificationData(
naviUpiRequestId = rewardEventId,
screenName = screenName,
)
}
}
}

View File

@@ -83,4 +83,8 @@ object Constants {
const val DIGITAL_GOLD_PAYMENT = "DIGITAL_GOLD_PAYMENT"
const val GOLD_OFFER_BOTTOM_SHEET = "GOLD_OFFER_BOTTOM_SHEET"
const val SHOW_OFFER_BOTTOMSHEET = "SHOW_OFFER_BOTTOMSHEET"
const val SCRATCH_CARD = "SCRATCH_CARD"
const val NONE = "NONE"
const val GOLD_FIRST_INVESTMENT = "GOLD_FIRST_INVESTMENT"
const val NAVI_UPI_TXN = "NAVI_UPI_TXN"
}

View File

@@ -192,7 +192,7 @@ constructor(
this.isAutoClickConsumed = true
}
fun fetchScratchCardData(naviUpiRequestId: String, screenName: String) {
fun fetchScratchCardOrGratificationData(naviUpiRequestId: String, screenName: String) {
viewModelScope.launch(Dispatchers.IO) {
scratchCardNudgeHelper
.getGratification(requestId = naviUpiRequestId, screenName = screenName)