TP-40528 | add condition for block/spam option (#7759)

This commit is contained in:
Shaurya Rehan
2023-09-07 19:00:13 +05:30
committed by GitHub
parent 2b8d090b69
commit feab1c4add
7 changed files with 34 additions and 28 deletions

View File

@@ -1261,7 +1261,7 @@ class NaviPayAnalytics private constructor() {
NaviTrackEvent.trackEventOnClickStream("NaviTrackEvent.NaviPay_SendMoney_BankSelectClicked")
}
fun onKebabMenuClick() {
fun onBlockAndSpamOptionClick() {
NaviTrackEvent.trackEventOnClickStream("NaviPay_SendMoney_MenuIconClick")
}

View File

@@ -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?"
)

View File

@@ -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,

View File

@@ -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

View File

@@ -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
)
}

View File

@@ -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(

View File

@@ -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 }
}
}