TP-40528 | add condition for block/spam option (#7759)
This commit is contained in:
@@ -1261,7 +1261,7 @@ class NaviPayAnalytics private constructor() {
|
||||
NaviTrackEvent.trackEventOnClickStream("NaviTrackEvent.NaviPay_SendMoney_BankSelectClicked")
|
||||
}
|
||||
|
||||
fun onKebabMenuClick() {
|
||||
fun onBlockAndSpamOptionClick() {
|
||||
NaviTrackEvent.trackEventOnClickStream("NaviPay_SendMoney_MenuIconClick")
|
||||
}
|
||||
|
||||
|
||||
@@ -27,5 +27,5 @@ data class ConfigMessage(
|
||||
@SerializedName("invalidAmountGenericMessage") val invalidAmountGenericMessage: String = "Invalid amount",
|
||||
@SerializedName("sendMoneyDefaultRemarks") val sendMoneyDefaultRemarks: String = "Paid via Navi",
|
||||
@SerializedName("requestMoneyDefaultRemarks") val requestMoneyDefaultRemarks: String = "Requested via Navi",
|
||||
@SerializedName("collectRequestMenuCtaText") val collectRequestMenuCtaText: String = "Don't know this user?"
|
||||
@SerializedName("blockAndSpamCtaText") val blockAndSpamCtaText: String = "Don't know this user?"
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ import com.navi.design.theme.ttComposeFontFamily
|
||||
import com.navi.design.utils.clickableWithNoGesture
|
||||
import com.navi.pay.R
|
||||
import com.navi.pay.common.theme.color.NaviPayColor
|
||||
import com.navi.pay.management.common.sendmoney.model.view.PayeeDetailsCtaWidgetData
|
||||
import com.navi.pay.management.common.sendmoney.model.view.BlockAndSpamCtaData
|
||||
import com.navi.pay.utils.clickableDebounce
|
||||
import com.navi.pay.utils.shimmerEffect
|
||||
|
||||
@@ -35,7 +35,7 @@ fun PayeeDetailsView(
|
||||
userNameText: String,
|
||||
userVpaText: String,
|
||||
@DrawableRes endImageResId: Int,
|
||||
payeeDetailsCtaWidgetData: PayeeDetailsCtaWidgetData? = null
|
||||
blockAndSpamCtaData: BlockAndSpamCtaData? = null
|
||||
) {
|
||||
ConstraintLayout(
|
||||
modifier = modifier.then(
|
||||
@@ -108,7 +108,7 @@ fun PayeeDetailsView(
|
||||
color = NaviPayColor.textPrimary,
|
||||
fontWeight = getFontWeight(FontWeightEnum.NAVI_BODY_REGULAR))
|
||||
|
||||
if (payeeDetailsCtaWidgetData?.isUserActionCtaVisible == true) {
|
||||
if (blockAndSpamCtaData?.isUserActionCtaVisible == true) {
|
||||
Text(modifier = Modifier
|
||||
.constrainAs(userCtaAction) {
|
||||
top.linkTo(userVpa.bottom, 16.dp)
|
||||
@@ -118,9 +118,9 @@ fun PayeeDetailsView(
|
||||
}
|
||||
.layoutId(userCtaAction)
|
||||
.clickableWithNoGesture {
|
||||
payeeDetailsCtaWidgetData.onActionClick.invoke()
|
||||
blockAndSpamCtaData.onActionClick.invoke()
|
||||
},
|
||||
text = payeeDetailsCtaWidgetData.userActionCtaText,
|
||||
text = blockAndSpamCtaData.userActionCtaText,
|
||||
textDecoration = TextDecoration.Underline,
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.navi.pay.management.common.sendmoney.model.view
|
||||
|
||||
data class PayeeDetailsCtaWidgetData(
|
||||
data class BlockAndSpamCtaData(
|
||||
val isUserActionCtaVisible: Boolean = false,
|
||||
val userActionCtaText: String = "",
|
||||
val onActionClick: () -> Unit
|
||||
@@ -249,9 +249,9 @@ fun SendMoneyScreen(
|
||||
}
|
||||
}
|
||||
|
||||
val onCollectRequestMenuClick = {
|
||||
val onBlockAndSpamOptionClick = {
|
||||
keyboardController?.customHide(context = context, view = view)
|
||||
naviPayAnalytics.onKebabMenuClick()
|
||||
naviPayAnalytics.onBlockAndSpamOptionClick()
|
||||
sendMoneyViewModel.updateCurrentBottomSheet(
|
||||
SendMoneyBottomSheetType.UserMenuOption
|
||||
)
|
||||
@@ -302,7 +302,7 @@ fun SendMoneyScreen(
|
||||
closeSheet = closeSheet,
|
||||
onPayButtonClick = onPayButtonClick,
|
||||
onMoreAccountsClick = onMoreAccountsClick,
|
||||
onCollectRequestMenuClick = onCollectRequestMenuClick
|
||||
onBlockAndSpamOptionClick = onBlockAndSpamOptionClick
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,6 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.constraintlayout.compose.ConstraintLayout
|
||||
import androidx.constraintlayout.compose.Dimension
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.navi.design.font.FontWeightEnum
|
||||
import com.navi.design.snackbar.ErrorSnackBar
|
||||
@@ -59,8 +58,8 @@ import com.navi.pay.common.ui.PayeeDetailsView
|
||||
import com.navi.pay.common.ui.ThemeRoundedButton
|
||||
import com.navi.pay.common.utils.SnackBarPredefinedConfig
|
||||
import com.navi.pay.management.common.sendmoney.model.view.BankAccountsState
|
||||
import com.navi.pay.management.common.sendmoney.model.view.BlockAndSpamCtaData
|
||||
import com.navi.pay.management.common.sendmoney.model.view.LinkedAccountEntityState
|
||||
import com.navi.pay.management.common.sendmoney.model.view.PayeeDetailsCtaWidgetData
|
||||
import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity
|
||||
import com.navi.pay.management.common.sendmoney.model.view.SendMoneyScreenSource
|
||||
import com.navi.pay.management.common.sendmoney.viewmodel.SendMoneyViewModel
|
||||
@@ -88,7 +87,7 @@ fun SendMoneySection(
|
||||
closeSheet: () -> Unit,
|
||||
onPayButtonClick: (String) -> Unit,
|
||||
onMoreAccountsClick: () -> Unit,
|
||||
onCollectRequestMenuClick: () -> Unit
|
||||
onBlockAndSpamOptionClick: () -> Unit
|
||||
) {
|
||||
val note by sendMoneyViewModel.note.collectAsStateWithLifecycle()
|
||||
val snackbarState by sendMoneyViewModel.snackbarState.collectAsStateWithLifecycle()
|
||||
@@ -100,7 +99,8 @@ fun SendMoneySection(
|
||||
val isSelectedAccountEligible by sendMoneyViewModel.isSelectedAccountEligible.collectAsStateWithLifecycle()
|
||||
val payButtonText by sendMoneyViewModel.payButtonText.collectAsStateWithLifecycle()
|
||||
val bankAccountsState by sendMoneyViewModel.bankAccountsState.collectAsStateWithLifecycle()
|
||||
val menuText by sendMoneyViewModel.menuText.collectAsStateWithLifecycle()
|
||||
val blockAndSpamOptionEnabled by sendMoneyViewModel.blockAndSpamOptionEnabled.collectAsStateWithLifecycle()
|
||||
val blockAndSpamCtaText by sendMoneyViewModel.blockAndSpamCtaText.collectAsStateWithLifecycle()
|
||||
|
||||
val focusManager = LocalFocusManager.current
|
||||
val keyboardController = LocalSoftwareKeyboardController.current
|
||||
@@ -134,13 +134,11 @@ fun SendMoneySection(
|
||||
userNameText = payeeEntity.name,
|
||||
userVpaText = vpaToDisplay,
|
||||
endImageResId = R.drawable.ic_send_money,
|
||||
payeeDetailsCtaWidgetData = if (sendMoneyViewModel.isMenuOptionVisible) PayeeDetailsCtaWidgetData(
|
||||
isUserActionCtaVisible = true,
|
||||
userActionCtaText = menuText,
|
||||
onActionClick = {
|
||||
onCollectRequestMenuClick()
|
||||
},
|
||||
) else null
|
||||
blockAndSpamCtaData = BlockAndSpamCtaData(
|
||||
isUserActionCtaVisible = blockAndSpamOptionEnabled,
|
||||
userActionCtaText = blockAndSpamCtaText,
|
||||
onActionClick = onBlockAndSpamOptionClick
|
||||
)
|
||||
)
|
||||
|
||||
SelectAccountView(
|
||||
|
||||
@@ -110,6 +110,7 @@ import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.asSharedFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.stateIn
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -208,8 +209,6 @@ class SendMoneyViewModel @Inject constructor(
|
||||
val transactionType =
|
||||
upiTransactionTypeEnumNavType.get(savedStateHandle, "transactionType")
|
||||
?: UpiTransactionType.P2P_PAY
|
||||
val isMenuOptionVisible =
|
||||
(source is SendMoneyScreenSource.CollectRequest && (payeeEntity.value.isMerchantVerified == null || payeeEntity.value.isMerchantVerified == false))
|
||||
|
||||
val updateCurrentBottomSheet: (SendMoneyBottomSheetType) -> Unit =
|
||||
{ newValue: SendMoneyBottomSheetType ->
|
||||
@@ -238,9 +237,18 @@ class SendMoneyViewModel @Inject constructor(
|
||||
MutableStateFlow(if (source is SendMoneyScreenSource.CollectRequest) R.drawable.ic_three_dots_option_icon else null)
|
||||
val actionIconResId = _actionIconResId.asStateFlow()
|
||||
|
||||
private val _menuText =
|
||||
MutableStateFlow(naviPayDefaultConfig.config.configMessage.collectRequestMenuCtaText)
|
||||
val menuText = _menuText.asStateFlow()
|
||||
private val _blockAndSpamCtaText =
|
||||
MutableStateFlow(naviPayDefaultConfig.config.configMessage.blockAndSpamCtaText)
|
||||
val blockAndSpamCtaText = _blockAndSpamCtaText.asStateFlow()
|
||||
|
||||
val blockAndSpamOptionEnabled = payeeEntity.map {
|
||||
(source is SendMoneyScreenSource.CollectRequest && (it.isMerchantVerified == null || it.isMerchantVerified == false))
|
||||
}.stateIn(
|
||||
scope = viewModelScope,
|
||||
started = SharingStarted.WhileSubscribed(),
|
||||
initialValue = if (payeeEntity.value.isVerifiedVpa) (source is SendMoneyScreenSource.CollectRequest && (payeeEntity.value.isMerchantVerified == null || payeeEntity.value.isMerchantVerified == false))
|
||||
else false
|
||||
)
|
||||
|
||||
/**
|
||||
* Possible values and their meaning
|
||||
@@ -302,7 +310,7 @@ class SendMoneyViewModel @Inject constructor(
|
||||
)
|
||||
?: NaviPayDefaultConfig()
|
||||
|
||||
_menuText.update { naviPayDefaultConfig.config.configMessage.collectRequestMenuCtaText }
|
||||
_blockAndSpamCtaText.update { naviPayDefaultConfig.config.configMessage.blockAndSpamCtaText }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user