TP-53619 | Master → Development (Release 4.3.1) (#9267)
This commit is contained in:
@@ -15,8 +15,8 @@ kapt {
|
||||
correctErrorTypes true
|
||||
}
|
||||
|
||||
def VERSION_CODE = 371
|
||||
def VERSION_NAME = "4.2.2"
|
||||
def VERSION_CODE = 373
|
||||
def VERSION_NAME = "4.3.1"
|
||||
|
||||
android {
|
||||
namespace 'com.naviapp'
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
<uses-sdk tools:overrideLibrary="org.npci.upi.security.pinactivitycomponent" />
|
||||
|
||||
<uses-feature android:name="android.hardware.camera.any" />
|
||||
<uses-feature android:name="android.hardware.sensor.light" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
<application android:hardwareAccelerated="true">
|
||||
|
||||
@@ -768,13 +768,10 @@ class NaviPayAnalytics private constructor() {
|
||||
)
|
||||
}
|
||||
|
||||
fun onTorchButtonClick(isFlashOn: Boolean, lightSensorValue: Float) {
|
||||
fun onTorchButtonClick(isFlashOn: Boolean) {
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
"NaviPay_QrScanner_TorchButtonClicked", mapOf(
|
||||
Pair("isFlashOn", isFlashOn.toString()),
|
||||
Pair(
|
||||
"lightSensorValue", lightSensorValue.toString()
|
||||
)
|
||||
Pair("isFlashOn", isFlashOn.toString())
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ fun TransactionDetailSection(
|
||||
naviPayAnalytics: NaviPayAnalytics.NaviPayTransactionDetailsSectionBase,
|
||||
onCopyIconClicked: ((String) -> Unit)? = null,
|
||||
isPayAgainEnabled: Boolean,
|
||||
isTransactionHistoryCtaEnabled: Boolean = true,
|
||||
naviPayActivity: NaviPayActivity,
|
||||
showCopySnackBar: Boolean = false,
|
||||
updateCopySnackBarState: (Boolean) -> Unit,
|
||||
@@ -263,18 +264,22 @@ fun TransactionDetailSection(
|
||||
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
|
||||
KeyValueWithCopySection(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
key = stringResource(id = R.string.navi_transaction_id),
|
||||
value = transactionEntity?.transactionDetailEntity?.metaData?.npTxnId ?: "",
|
||||
iconId = R.drawable.ic_copy,
|
||||
onCopyIconClicked = {
|
||||
naviPayAnalytics.onCopyNaviTransactionIdClicked(source = analyticsSource)
|
||||
onCopyIconClicked?.invoke(it)
|
||||
transactionEntity?.transactionDetailEntity?.metaData?.npTxnId?.let {
|
||||
if (it.isNotBlank()) {
|
||||
KeyValueWithCopySection(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
key = stringResource(id = R.string.navi_transaction_id),
|
||||
value = it,
|
||||
iconId = R.drawable.ic_copy,
|
||||
onCopyIconClicked = {
|
||||
naviPayAnalytics.onCopyNaviTransactionIdClicked(source = analyticsSource)
|
||||
onCopyIconClicked?.invoke(it)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
@@ -283,7 +288,8 @@ fun TransactionDetailSection(
|
||||
onCheckBalanceCtaClicked = onCheckBalanceCtaClicked,
|
||||
onShareReceiptCtaClicked = onShareReceiptCtaClicked,
|
||||
onPayAgainCtaClicked = onPayAgainCtaClicked,
|
||||
isPayAgainEnabled = isPayAgainEnabled
|
||||
isPayAgainEnabled = isPayAgainEnabled,
|
||||
isTransactionHistoryCtaEnabled = isTransactionHistoryCtaEnabled
|
||||
)
|
||||
}
|
||||
},
|
||||
@@ -622,7 +628,8 @@ fun CtaSection(
|
||||
onCheckBalanceCtaClicked: () -> Unit,
|
||||
onShareReceiptCtaClicked: () -> Unit,
|
||||
onPayAgainCtaClicked: () -> Unit,
|
||||
isPayAgainEnabled: Boolean
|
||||
isPayAgainEnabled: Boolean,
|
||||
isTransactionHistoryCtaEnabled: Boolean
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
@@ -653,11 +660,14 @@ fun CtaSection(
|
||||
) {
|
||||
onCheckBalanceCtaClicked.invoke()
|
||||
}
|
||||
CtaButtonForTransactionDetailsSection(
|
||||
iconId = R.drawable.ic_transaction_history,
|
||||
ctaName = stringResource(id = R.string.np_transaction_history),
|
||||
) {
|
||||
onTransactionHistoryCtaClicked.invoke()
|
||||
|
||||
if (isTransactionHistoryCtaEnabled) {
|
||||
CtaButtonForTransactionDetailsSection(
|
||||
iconId = R.drawable.ic_transaction_history,
|
||||
ctaName = stringResource(id = R.string.np_transaction_history),
|
||||
) {
|
||||
onTransactionHistoryCtaClicked.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -190,6 +190,7 @@ private fun RenderPaymentSummaryScreen(
|
||||
checkBalanceBankAccountUniqueId = checkBalanceBankAccountUniqueId,
|
||||
helpCtaText = helpCtaText,
|
||||
onHelpCtaClicked = onHelpCtaClicked,
|
||||
transactionDetailScreenSource = TransactionDetailSectionSource.PAYMENT_SUMMARY_SCREEN
|
||||
transactionDetailScreenSource = TransactionDetailSectionSource.PAYMENT_SUMMARY_SCREEN,
|
||||
isTransactionHistoryCtaEnabled = (!transactionDetailItemProperty.isTransactionStatusNonTerminal)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1773,9 +1773,10 @@ class SendMoneyViewModel @Inject constructor(
|
||||
txnStatus = sendMoneyResponse.status,
|
||||
txnType = transactionType.name,
|
||||
txnReqType = sendMoneyResponse.txnRequestType,
|
||||
amount = paymentAmount.value,
|
||||
amount = String.format("%.2f", (paymentAmount.value.toDoubleOrNull() ?: 0.0)),
|
||||
currency = DEFAULT_UPI_CURRENCY,
|
||||
remarks = payeeEntity.value.note,
|
||||
remarks = note.value.trim()
|
||||
.ifBlank { naviPayDefaultConfig.config.configMessage.sendMoneyDefaultRemarks },
|
||||
txnTimestamp = sendMoneyResponse.transactionTimestamp
|
||||
?: DateTime.now(DateTimeZone.UTC), // DB always stores in UTC
|
||||
instrumentId = "",
|
||||
|
||||
@@ -519,6 +519,9 @@ class UPILiteViewModel @Inject constructor(
|
||||
if (liteAccountBalanceFromPreviousScreen.isNotEmpty()) {
|
||||
updateIsUserOnboarded(isUserOnboarded = true)
|
||||
updateUPILiteBalance(balance = liteAccountBalanceFromPreviousScreen)
|
||||
updateEnteredAmount(
|
||||
amount = getPreFilledTopUpAmount(balance = liteAccountBalanceFromPreviousScreen)
|
||||
)
|
||||
|
||||
updateEnteredAmount(
|
||||
amount = getPreFilledTopUpAmount(balance = liteAccountBalanceFromPreviousScreen)
|
||||
|
||||
@@ -578,5 +578,4 @@ fun MandateEntityItemViewOfPendingCategory(
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -107,7 +107,6 @@ import com.navi.pay.permission.model.view.PermissionState
|
||||
import com.navi.pay.permission.utils.PermissionKeys
|
||||
import com.navi.pay.permission.utils.PermissionUtils
|
||||
import com.navi.pay.utils.DEFAULT_INITIATION_MODE_QR_MANDATE
|
||||
import com.navi.pay.utils.LIGHT_SENSOR_TIME_INTERVAL
|
||||
import com.navi.pay.utils.NAVI_PAY_SCAN_AND_PAY_ANALYTICS_EVENT
|
||||
import com.navi.pay.utils.clearBackStackUpToAndNavigate
|
||||
import com.navi.pay.utils.clickableDebounce
|
||||
@@ -211,36 +210,6 @@ fun QrScannerScreen(
|
||||
}
|
||||
}
|
||||
|
||||
if (FirebaseRemoteConfigHelper.getBoolean(LIGHT_SENSOR_DISABLE).not()) {
|
||||
DisposableEffect(key1 = lifecycleOwner) {
|
||||
var lastEventTs = 0L
|
||||
val sensorListener = object : SensorEventListener {
|
||||
override fun onSensorChanged(event: SensorEvent?) {
|
||||
qrScannerViewModel.lightSensorValue = event?.values?.get(0) ?: 0f
|
||||
if (lastEventTs < System.currentTimeMillis() - LIGHT_SENSOR_TIME_INTERVAL) {
|
||||
lastEventTs = System.currentTimeMillis()
|
||||
naviPayAnalytics.onLightSensor(event?.values?.get(0) ?: -1.0f)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
|
||||
}
|
||||
}
|
||||
val sensorManager =
|
||||
naviPayActivity.getSystemService(Context.SENSOR_SERVICE) as SensorManager?
|
||||
sensorManager?.getDefaultSensor(Sensor.TYPE_LIGHT)?.also { accelerometer ->
|
||||
sensorManager.registerListener(
|
||||
sensorListener,
|
||||
accelerometer,
|
||||
SensorManager.SENSOR_DELAY_NORMAL
|
||||
)
|
||||
}
|
||||
onDispose {
|
||||
sensorManager?.unregisterListener(sensorListener)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resultRecipient.onNavResult { result ->
|
||||
when (result) {
|
||||
is NavResult.Canceled -> naviPayActivity.finish()
|
||||
@@ -438,10 +407,7 @@ fun QrScannerScreen(
|
||||
TorchButton(
|
||||
isTorchEnabled = isTorchEnabled,
|
||||
onTorchToggle = {
|
||||
naviPayAnalytics.onTorchButtonClick(
|
||||
isFlashOn = isTorchEnabled,
|
||||
qrScannerViewModel.lightSensorValue
|
||||
)
|
||||
naviPayAnalytics.onTorchButtonClick(isFlashOn = isTorchEnabled)
|
||||
qrScannerViewModel.toggleTorchStatus()
|
||||
})
|
||||
|
||||
|
||||
@@ -75,8 +75,6 @@ class QrScannerViewModel @Inject constructor(
|
||||
|
||||
var isQrCodeProcessing: AtomicBoolean = AtomicBoolean(false)
|
||||
|
||||
var lightSensorValue = 0f
|
||||
|
||||
private val _showPopUpPermission = MutableStateFlow(true)
|
||||
val showPopUpPermission = _showPopUpPermission.asStateFlow()
|
||||
|
||||
|
||||
@@ -151,7 +151,6 @@ const val BANK_NAME_PLACEHOLDER = "{{BANK_NAME}}"
|
||||
const val RESOURCE_DEFAULT_ID = -1
|
||||
const val RUPEE_SYMBOL = "₹"
|
||||
const val TRANSITION_DURATION = 200
|
||||
const val LIGHT_SENSOR_TIME_INTERVAL = 5000
|
||||
const val RUPEE_SYMBOL_CHAR = '₹'
|
||||
|
||||
//Deeplink
|
||||
|
||||
Reference in New Issue
Block a user