diff --git a/app/build.gradle b/app/build.gradle
index 25b21dcfe3..ec031c5fb7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -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'
diff --git a/navi-pay/src/main/AndroidManifest.xml b/navi-pay/src/main/AndroidManifest.xml
index cbb96172eb..98fe228368 100644
--- a/navi-pay/src/main/AndroidManifest.xml
+++ b/navi-pay/src/main/AndroidManifest.xml
@@ -20,7 +20,6 @@
-
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt b/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt
index 401f9a1771..5f5737c975 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt
@@ -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())
)
)
}
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/common/ui/TransactionDetailSection.kt b/navi-pay/src/main/kotlin/com/navi/pay/common/ui/TransactionDetailSection.kt
index 3d99f7a082..88bcad4c75 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/common/ui/TransactionDetailSection.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/common/ui/TransactionDetailSection.kt
@@ -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()
+ }
}
}
}
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/management/common/paymentsummary/ui/PaymentSummaryScreen.kt b/navi-pay/src/main/kotlin/com/navi/pay/management/common/paymentsummary/ui/PaymentSummaryScreen.kt
index 10e0208ec0..613f9af460 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/management/common/paymentsummary/ui/PaymentSummaryScreen.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/management/common/paymentsummary/ui/PaymentSummaryScreen.kt
@@ -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)
)
}
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt b/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt
index 060cb295eb..80da163269 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt
@@ -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 = "",
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/management/lite/viewmodel/UPILiteViewModel.kt b/navi-pay/src/main/kotlin/com/navi/pay/management/lite/viewmodel/UPILiteViewModel.kt
index a75dca62d5..bda470bd54 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/management/lite/viewmodel/UPILiteViewModel.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/management/lite/viewmodel/UPILiteViewModel.kt
@@ -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)
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/management/mandate/ui/MandateScreen.kt b/navi-pay/src/main/kotlin/com/navi/pay/management/mandate/ui/MandateScreen.kt
index 0d956cf7a6..234973ec7e 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/management/mandate/ui/MandateScreen.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/management/mandate/ui/MandateScreen.kt
@@ -578,5 +578,4 @@ fun MandateEntityItemViewOfPendingCategory(
)
}
}
-}
-
+}
\ No newline at end of file
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt b/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt
index c1d6eb2ea2..ad9277e7ae 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt
@@ -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()
})
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/viewmodel/QrScannerViewModel.kt b/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/viewmodel/QrScannerViewModel.kt
index d480b3fed3..b3025e8986 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/viewmodel/QrScannerViewModel.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/viewmodel/QrScannerViewModel.kt
@@ -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()
diff --git a/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt b/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt
index 273db7f1d0..39d38fb925 100644
--- a/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt
+++ b/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt
@@ -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