Ntp-28633 | Shiv Natani | alfred masking pms (#14615)
This commit is contained in:
@@ -176,6 +176,7 @@ import com.navi.pay.utils.noRippleClickable
|
||||
import com.navi.pay.utils.noRippleClickableWithDebounce
|
||||
import com.navi.pay.utils.shake
|
||||
import com.navi.pay.utils.shimmerEffect
|
||||
import com.navi.uitron.utils.alfredMaskSensitiveComposable
|
||||
import com.navi.uitron.utils.orValue
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
@@ -3447,8 +3448,15 @@ fun RenderCheckBalanceActionOrResultSection(
|
||||
|
||||
@Composable
|
||||
private fun RenderCheckBalanceSuccessState(balance: String, alpha: Float = 1f) {
|
||||
val view = LocalView.current
|
||||
NaviText(
|
||||
modifier = Modifier.padding(start = 4.dp),
|
||||
modifier =
|
||||
Modifier.padding(start = 4.dp)
|
||||
.alfredMaskSensitiveComposable(
|
||||
isSensitive = true,
|
||||
rootView = view,
|
||||
id = "balance_text",
|
||||
),
|
||||
text = balance,
|
||||
fontFamily = naviFontFamily,
|
||||
fontWeight = getFontWeight(FontWeightEnum.NAVI_HEADLINE_REGULAR),
|
||||
|
||||
@@ -41,6 +41,7 @@ import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonColors
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
@@ -74,8 +75,12 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import coil.compose.AsyncImage
|
||||
import com.navi.alfred.AlfredManager
|
||||
import com.navi.base.utils.EMPTY
|
||||
import com.navi.common.utils.ClickDebounce
|
||||
import com.navi.common.utils.get
|
||||
@@ -145,6 +150,26 @@ fun CardDetailScreenRoot(
|
||||
val cardFocusRequester = remember { FocusRequester() }
|
||||
val expiryFocusRequester = remember { FocusRequester() }
|
||||
val cvvFocusRequester = remember { FocusRequester() }
|
||||
val lifecycleOwner = LocalLifecycleOwner.current
|
||||
|
||||
DisposableEffect(key1 = lifecycleOwner) {
|
||||
val observer = LifecycleEventObserver { _, event ->
|
||||
when (event) {
|
||||
Lifecycle.Event.ON_CREATE,
|
||||
Lifecycle.Event.ON_RESUME -> {
|
||||
AlfredManager.setCurrentScreenName(
|
||||
NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName
|
||||
)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
lifecycleOwner.lifecycle.addObserver(observer)
|
||||
onDispose {
|
||||
lifecycleOwner.lifecycle.removeObserver(observer)
|
||||
AlfredManager.setCurrentScreenName(paymentActivity.screenName)
|
||||
}
|
||||
}
|
||||
HandleScanCardResult(resultRecipientScanCardScreen, cardDetailScreenVM::onEvent)
|
||||
EffectsHandler(
|
||||
cardDetailScreenVM = cardDetailScreenVM,
|
||||
|
||||
@@ -20,6 +20,7 @@ import androidx.compose.material.ModalBottomSheetValue
|
||||
import androidx.compose.material.Surface
|
||||
import androidx.compose.material.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
@@ -29,7 +30,10 @@ import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||
import com.google.gson.Gson
|
||||
@@ -162,6 +166,27 @@ fun MPSScreen(
|
||||
skipHalfExpanded = true,
|
||||
)
|
||||
|
||||
val lifecycleOwner = LocalLifecycleOwner.current
|
||||
|
||||
DisposableEffect(key1 = lifecycleOwner) {
|
||||
val observer = LifecycleEventObserver { _, event ->
|
||||
when (event) {
|
||||
Lifecycle.Event.ON_CREATE,
|
||||
Lifecycle.Event.ON_RESUME -> {
|
||||
AlfredManager.setCurrentScreenName(
|
||||
NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName
|
||||
)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
lifecycleOwner.lifecycle.addObserver(observer)
|
||||
onDispose {
|
||||
lifecycleOwner.lifecycle.removeObserver(observer)
|
||||
AlfredManager.setCurrentScreenName(naviPaymentActivity.screenName)
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(key1 = bottomSheetStateHolder.showBottomSheet) {
|
||||
when (bottomSheetStateHolder.showBottomSheet) {
|
||||
true -> coroutineScope.launch { bottomSheetState.show() }
|
||||
|
||||
@@ -36,6 +36,7 @@ import androidx.compose.material.ModalBottomSheetValue
|
||||
import androidx.compose.material.rememberModalBottomSheetState
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
@@ -52,10 +53,14 @@ import androidx.compose.ui.platform.LocalConfiguration
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.airbnb.lottie.compose.LottieAnimation
|
||||
import com.airbnb.lottie.compose.LottieCompositionSpec
|
||||
import com.airbnb.lottie.compose.rememberLottieComposition
|
||||
import com.navi.alfred.AlfredManager
|
||||
import com.navi.base.utils.isNotNull
|
||||
import com.navi.base.utils.isNotNullAndNotEmpty
|
||||
import com.navi.base.utils.isNull
|
||||
@@ -158,6 +163,26 @@ fun NPSScreenRoot(
|
||||
)
|
||||
val isKeyboardVisible = WindowInsets.isImeVisible
|
||||
val npsScreenState by npsViewModel.state.collectAsStateWithLifecycle()
|
||||
val lifecycleOwner = LocalLifecycleOwner.current
|
||||
|
||||
DisposableEffect(key1 = lifecycleOwner) {
|
||||
val observer = LifecycleEventObserver { _, event ->
|
||||
when (event) {
|
||||
Lifecycle.Event.ON_CREATE,
|
||||
Lifecycle.Event.ON_RESUME -> {
|
||||
AlfredManager.setCurrentScreenName(
|
||||
NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName
|
||||
)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
lifecycleOwner.lifecycle.addObserver(observer)
|
||||
onDispose {
|
||||
lifecycleOwner.lifecycle.removeObserver(observer)
|
||||
AlfredManager.setCurrentScreenName(activity.screenName)
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
naviPaymentAnalytics.onNPSLanded(npsViewModel.getAnalyticsParams())
|
||||
|
||||
@@ -73,6 +73,7 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType.Companion.LongPress
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.platform.LocalView
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
@@ -91,6 +92,7 @@ import com.google.accompanist.permissions.MultiplePermissionsState
|
||||
import com.google.mlkit.vision.common.InputImage
|
||||
import com.google.mlkit.vision.text.TextRecognition
|
||||
import com.google.mlkit.vision.text.latin.TextRecognizerOptions
|
||||
import com.navi.alfred.AlfredManager
|
||||
import com.navi.base.utils.EMPTY
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.design.font.FontWeightEnum
|
||||
@@ -121,6 +123,7 @@ import com.navi.payment.nativepayment.presentation.reducer.TorchEvent
|
||||
import com.navi.payment.nativepayment.viewmodel.ScanCardResult
|
||||
import com.navi.payment.nativepayment.viewmodel.ScanCardVM
|
||||
import com.navi.payment.utils.Constants.DEFAULT_ZOOM_RATIO
|
||||
import com.navi.uitron.utils.alfredMaskSensitiveComposable
|
||||
import com.ramcosta.composedestinations.annotation.Destination
|
||||
import com.ramcosta.composedestinations.result.ResultBackNavigator
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@@ -136,6 +139,7 @@ fun ScanCardScreenRoot(
|
||||
scanCardVM: ScanCardVM = hiltViewModel(),
|
||||
resultNavigator: ResultBackNavigator<ScanCardResult>,
|
||||
paymentAmount: Double = 0.0,
|
||||
activity: NaviPaymentActivity,
|
||||
scanCardAnalytics: NaviPaymentAnalytics.ScanCardScreen =
|
||||
NaviPaymentAnalytics.INSTANCE.ScanCardScreen(),
|
||||
) {
|
||||
@@ -162,6 +166,25 @@ fun ScanCardScreenRoot(
|
||||
|
||||
BackHandler { onEvent(ScanCardEvent.OnBackPress) }
|
||||
|
||||
DisposableEffect(key1 = lifecycleOwner) {
|
||||
val observer = LifecycleEventObserver { _, event ->
|
||||
when (event) {
|
||||
Lifecycle.Event.ON_CREATE,
|
||||
Lifecycle.Event.ON_RESUME -> {
|
||||
AlfredManager.setCurrentScreenName(
|
||||
NaviPaymentAnalyticScreenName.SCAN_CARD_SCREEN.screenName
|
||||
)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
lifecycleOwner.lifecycle.addObserver(observer)
|
||||
onDispose {
|
||||
lifecycleOwner.lifecycle.removeObserver(observer)
|
||||
AlfredManager.setCurrentScreenName(activity.screenName)
|
||||
}
|
||||
}
|
||||
|
||||
EffectsHandler(
|
||||
scanCardVM = scanCardVM,
|
||||
resultNavigator = resultNavigator,
|
||||
@@ -280,13 +303,21 @@ private fun ScanCardMainContent(
|
||||
modifier =
|
||||
Modifier.fillMaxWidth().padding(horizontal = 32.dp).align(Alignment.Start)
|
||||
) {
|
||||
val view = LocalView.current
|
||||
CardScannerView(
|
||||
naviPaymentActivity = naviPaymentActivity,
|
||||
isFlashEnabled = scanCardVM.isTorchEnabled,
|
||||
scanCardAnalytics = scanCardAnalytics,
|
||||
onEvent = onEvent,
|
||||
modifier =
|
||||
Modifier.fillMaxWidth().aspectRatio(1f).clip(RoundedCornerShape(4.dp)),
|
||||
Modifier.fillMaxWidth()
|
||||
.aspectRatio(1f)
|
||||
.clip(RoundedCornerShape(4.dp))
|
||||
.alfredMaskSensitiveComposable(
|
||||
isSensitive = true,
|
||||
rootView = view,
|
||||
id = "card_scan",
|
||||
),
|
||||
)
|
||||
FrameImage()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user