amount and card number in signature pad
This commit is contained in:
parent
40c392cc01
commit
511c3e0128
7
app/changelog.md
Normal file
7
app/changelog.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
## Change Logs For UAT
|
||||||
|
|
||||||
|
### version 3.3
|
||||||
|
* config auto update after transaction
|
||||||
|
* signature removed on void
|
||||||
|
* "Enter Password" color to LegacyRed
|
||||||
|
|
||||||
@ -92,6 +92,8 @@ fun AppNavGraph(
|
|||||||
val sharedViewModel: SharedViewModel = hiltViewModel(activity)
|
val sharedViewModel: SharedViewModel = hiltViewModel(activity)
|
||||||
SignaturePad(
|
SignaturePad(
|
||||||
onBack = { navController.popBackStack() },
|
onBack = { navController.popBackStack() },
|
||||||
|
amount = sharedViewModel.payDetail.value?.amount,
|
||||||
|
cardNumber = sharedViewModel.payDetail.value?.cardNo ?: "",
|
||||||
onConfirm = { bitmap, signatureBlob ->
|
onConfirm = { bitmap, signatureBlob ->
|
||||||
sharedViewModel.signBitmap = bitmap
|
sharedViewModel.signBitmap = bitmap
|
||||||
sharedViewModel.updateSignatureBlob(signatureBlob)
|
sharedViewModel.updateSignatureBlob(signatureBlob)
|
||||||
|
|||||||
@ -112,7 +112,7 @@ fun InputPassword(
|
|||||||
verticalArrangement = Arrangement.Center,
|
verticalArrangement = Arrangement.Center,
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
Text(text = "Enter Password", color = Color.Gray, fontSize = 18.sp)
|
Text(text = "Enter Password", color = Color.LegacyRed, fontSize = 18.sp)
|
||||||
Spacer(Modifier.height(16.dp))
|
Spacer(Modifier.height(16.dp))
|
||||||
PasswordDots(filledCount = uiState.input.length, totalCount = PASSWORD_LENGTH)
|
PasswordDots(filledCount = uiState.input.length, totalCount = PASSWORD_LENGTH)
|
||||||
Spacer(Modifier.height(8.dp))
|
Spacer(Modifier.height(8.dp))
|
||||||
|
|||||||
@ -29,6 +29,8 @@ import androidx.compose.ui.tooling.preview.Preview
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
||||||
import com.mob.utsmyanmar.ui.theme.MOBPOSTheme
|
import com.mob.utsmyanmar.ui.theme.MOBPOSTheme
|
||||||
|
import com.mob.utsmyanmar.utils.formatAmount
|
||||||
|
import com.mob.utsmyanmar.utils.maskCardNumber
|
||||||
import se.warting.signaturepad.SignaturePadAdapter
|
import se.warting.signaturepad.SignaturePadAdapter
|
||||||
import se.warting.signaturepad.SignaturePadView
|
import se.warting.signaturepad.SignaturePadView
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
@ -38,7 +40,9 @@ import com.mob.utsmyanmar.ui.theme.Color as AppColor
|
|||||||
fun SignaturePad(
|
fun SignaturePad(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onBack: () -> Unit = {},
|
onBack: () -> Unit = {},
|
||||||
onConfirm: (Bitmap?, ByteArray?) -> Unit = { _, _ -> }
|
onConfirm: (Bitmap?, ByteArray?) -> Unit = { _, _ -> },
|
||||||
|
amount: Long? = 0L,
|
||||||
|
cardNumber: String,
|
||||||
) {
|
) {
|
||||||
var signaturePadAdapter: SignaturePadAdapter? = null
|
var signaturePadAdapter: SignaturePadAdapter? = null
|
||||||
var selectedMode by remember { mutableStateOf(SignatureMode.Digital) }
|
var selectedMode by remember { mutableStateOf(SignatureMode.Digital) }
|
||||||
@ -76,6 +80,37 @@ fun SignaturePad(
|
|||||||
verticalArrangement = Arrangement.spacedBy(16.dp)
|
verticalArrangement = Arrangement.spacedBy(16.dp)
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
Column(
|
||||||
|
modifier = Modifier.padding(0.dp),
|
||||||
|
verticalArrangement = Arrangement.spacedBy(4.dp)
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = "Amount",
|
||||||
|
style = MaterialTheme.typography.titleSmall,
|
||||||
|
color = AppColor.LegacyRed
|
||||||
|
)
|
||||||
|
Text(
|
||||||
|
text = amount.formatAmount(),
|
||||||
|
style = MaterialTheme.typography.bodySmall,
|
||||||
|
color = AppColor.LegacyRed
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Column(
|
||||||
|
modifier = Modifier.padding(0.dp),
|
||||||
|
verticalArrangement = Arrangement.spacedBy(4.dp)
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = "Card Number",
|
||||||
|
style = MaterialTheme.typography.titleSmall,
|
||||||
|
color = AppColor.LegacyRed
|
||||||
|
)
|
||||||
|
Text(
|
||||||
|
text = cardNumber.maskCardNumber(),
|
||||||
|
style = MaterialTheme.typography.bodySmall,
|
||||||
|
color = AppColor.LegacyRed
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (isManualMode) {
|
if (isManualMode) {
|
||||||
Card(
|
Card(
|
||||||
@ -115,7 +150,11 @@ fun SignaturePad(
|
|||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.height(200.dp)
|
.height(200.dp)
|
||||||
.background(AppColor.White)
|
.background(AppColor.White)
|
||||||
.border(width = 1.dp, color = AppColor.LegacyRed, shape = RoundedCornerShape(8.dp)),
|
.border(
|
||||||
|
width = 1.dp,
|
||||||
|
color = AppColor.LegacyRed,
|
||||||
|
shape = RoundedCornerShape(8.dp)
|
||||||
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,6 +273,9 @@ private fun SignatureModeOption(
|
|||||||
@Composable
|
@Composable
|
||||||
fun SignaturePadPreview() {
|
fun SignaturePadPreview() {
|
||||||
MOBPOSTheme {
|
MOBPOSTheme {
|
||||||
SignaturePad()
|
SignaturePad(
|
||||||
|
amount = 1000000L,
|
||||||
|
cardNumber = "6244310034582136"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
20
app/src/main/java/com/mob/utsmyanmar/utils/Converter.kt
Normal file
20
app/src/main/java/com/mob/utsmyanmar/utils/Converter.kt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package com.mob.utsmyanmar.utils
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
|
||||||
|
@SuppressLint("DefaultLocale")
|
||||||
|
fun Long?.formatAmount(): String {
|
||||||
|
val amount = (this ?: 0L) / 100.0
|
||||||
|
return String.format("%,.2f", amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun String?.maskCardNumber(): String {
|
||||||
|
if (this.isNullOrEmpty()) return ""
|
||||||
|
val maskedPan = StringBuilder(this)
|
||||||
|
if (this.length > 12) {
|
||||||
|
maskedPan.replace(6, 12, "******")
|
||||||
|
} else {
|
||||||
|
maskedPan.append(" ")
|
||||||
|
}
|
||||||
|
return maskedPan.toString()
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user