latest saved

This commit is contained in:
kizzy 2026-07-21 13:10:36 +07:00
parent 003d7e7a21
commit fc4b817308
5 changed files with 29 additions and 30 deletions

View File

@ -32,7 +32,7 @@ fun EmvTransactionRoute(
onNavigateTransactionResult: () -> Unit, onNavigateTransactionResult: () -> Unit,
onNavigateInputRrn: () -> Unit, onNavigateInputRrn: () -> Unit,
onNavigateCardWaiting: () -> Unit, onNavigateCardWaiting: () -> Unit,
onNavigateError: (String) -> Unit, onNavigateError: (isSuccess:Boolean, messsage:String) -> Unit,
onNavigateMain: () -> Unit onNavigateMain: () -> Unit
) { ) {
val emvResultStatus by emvViewModel.emvResultStatus.observeAsState() val emvResultStatus by emvViewModel.emvResultStatus.observeAsState()
@ -69,7 +69,7 @@ fun EmvTransactionRoute(
val tradeData = emvViewModel.getTradeData() val tradeData = emvViewModel.getTradeData()
if (tradeData == null) { if (tradeData == null) {
onNavigateError("Please try again") onNavigateError(false,"Please try again")
return return
} }
@ -115,12 +115,12 @@ fun EmvTransactionRoute(
EmvResultStatus.TRY_AGAIN -> { EmvResultStatus.TRY_AGAIN -> {
sharedViewModel.set_errorFragmentMsg("Card Not Supported!") sharedViewModel.set_errorFragmentMsg("Card Not Supported!")
onNavigateError("Card Not Supported!") onNavigateError(false,"Card Not Supported!")
} }
EmvResultStatus.OFFLINE_DECLINE -> { EmvResultStatus.OFFLINE_DECLINE -> {
sharedViewModel.set_errorFragmentMsg("Offline Denial") sharedViewModel.set_errorFragmentMsg("Offline Denial")
onNavigateError("Offline Denial") onNavigateError(false,"Offline Denial")
} }
EmvResultStatus.CONFIRM_CODE_VERIFY -> onNavigateCardWaiting() EmvResultStatus.CONFIRM_CODE_VERIFY -> onNavigateCardWaiting()
@ -131,7 +131,7 @@ fun EmvTransactionRoute(
EmvResultStatus.PIN_MISMATCH -> { EmvResultStatus.PIN_MISMATCH -> {
sharedViewModel.set_errorFragmentMsg("PIN MISMATCH!") sharedViewModel.set_errorFragmentMsg("PIN MISMATCH!")
onNavigateError("PIN MISMATCH!") onNavigateError(false,"PIN MISMATCH!")
} }
EmvResultStatus.PIN_EMPTY -> { EmvResultStatus.PIN_EMPTY -> {
@ -164,27 +164,27 @@ fun EmvTransactionRoute(
EmvResultStatus.REVERSAL_FAIL -> { EmvResultStatus.REVERSAL_FAIL -> {
sharedViewModel.set_errorFragmentMsg("Reversal failed!") sharedViewModel.set_errorFragmentMsg("Reversal failed!")
onNavigateError("Reversal failed!") onNavigateError(false,"Reversal failed!")
} }
EmvResultStatus.REVERSAL_SUCCESS -> { EmvResultStatus.REVERSAL_SUCCESS -> {
sharedViewModel.set_successFragmentMsg("Reversal success!") sharedViewModel.set_successFragmentMsg("Reversal success!")
onNavigateMain() onNavigateError(true,"Reversal success!")
} }
EmvResultStatus.FAIL -> { EmvResultStatus.FAIL -> {
onNavigateError("Transaction failed") onNavigateError(false,"Transaction failed")
} }
EmvResultStatus.NETWORK_ERROR -> { EmvResultStatus.NETWORK_ERROR -> {
onNavigateError("Com Error!") onNavigateError(false,"Com Error!")
} }
EmvResultStatus.ERROR -> { EmvResultStatus.ERROR -> {
loadingMessage = null loadingMessage = null
val mapped = mapEmvError(errorCodeMsg) val mapped = mapEmvError(errorCodeMsg)
sharedViewModel.set_errorFragmentMsg(mapped) sharedViewModel.set_errorFragmentMsg(mapped)
onNavigateError(mapped) onNavigateError(false,mapped)
} }
else -> LogUtil.d(TAG, "Unhandled EmvResult Status : $status") else -> LogUtil.d(TAG, "Unhandled EmvResult Status : $status")

View File

@ -91,7 +91,7 @@ fun AppNavGraph(
val sharedViewModel: SharedViewModel = hiltViewModel(activity) val sharedViewModel: SharedViewModel = hiltViewModel(activity)
SignaturePad( SignaturePad(
onBack = { navController.popBackStack() }, onBack = { navController.popBackStack() },
onConfirm = { _, bitmap, signatureBlob -> onConfirm = { bitmap, signatureBlob ->
sharedViewModel.signBitmap = bitmap sharedViewModel.signBitmap = bitmap
sharedViewModel.updateSignatureBlob(signatureBlob) sharedViewModel.updateSignatureBlob(signatureBlob)
navController.navigate(Routes.TransactionResult.route) { navController.navigate(Routes.TransactionResult.route) {
@ -592,9 +592,9 @@ fun AppNavGraph(
launchSingleTop = true launchSingleTop = true
} }
}, },
onNavigateError = { message -> onNavigateError = { isSuccess,message ->
navController.navigate(Routes.TransactionError.createRoute(message)) { navController.navigate(Routes.TransactionError.createRoute(isSuccess,message)) {
popUpTo(Routes.ProcessingCard.route) { popUpTo(Routes.Processing.route) {
inclusive = true inclusive = true
} }
launchSingleTop = true launchSingleTop = true
@ -681,8 +681,8 @@ fun AppNavGraph(
launchSingleTop = true launchSingleTop = true
} }
}, },
onNavigateError = { message -> onNavigateError = { isSuccess,message ->
navController.navigate(Routes.TransactionError.createRoute(message)) { navController.navigate(Routes.TransactionError.createRoute(isSuccess,message)) {
popUpTo(Routes.EmvTransaction.route) { popUpTo(Routes.EmvTransaction.route) {
inclusive = true inclusive = true
} }
@ -764,8 +764,8 @@ fun AppNavGraph(
launchSingleTop = true launchSingleTop = true
} }
}, },
onNavigateError = { message -> onNavigateError = { isSuccess,message ->
navController.navigate(Routes.TransactionError.createRoute(message)) { navController.navigate(Routes.TransactionError.createRoute(isSuccess,message)) {
popUpTo(Routes.Processing.route) { popUpTo(Routes.Processing.route) {
inclusive = true inclusive = true
} }
@ -819,9 +819,11 @@ fun AppNavGraph(
} }
) )
) { backStackEntry -> ) { backStackEntry ->
val message = backStackEntry.arguments?.getString("message").orEmpty().trim() val isSuccess = backStackEntry.arguments?.getBoolean("isSuccess") ?: false
val message = backStackEntry.arguments?.getString("message").orEmpty()
TransactionErrorScreen( TransactionErrorScreen(
isSuccess = isSuccess,
message = message, message = message,
onDone = { onDone = {
navController.navigate(Routes.Dashboard.route) { navController.navigate(Routes.Dashboard.route) {

View File

@ -31,10 +31,7 @@ sealed class Routes(val route: String) {
data object TransactionResult : Routes("transaction_result") data object TransactionResult : Routes("transaction_result")
data object TransactionError : Routes("transaction_error/{message}") {
fun createRoute(message: String): String =
"transaction_error/${Uri.encode(message.ifBlank { " " })}"
}
data object PrintReceipt : Routes("print_receipt") data object PrintReceipt : Routes("print_receipt")
data object Version : Routes("version") data object Version : Routes("version")
data object Functions : Routes("functions") data object Functions : Routes("functions")

View File

@ -13,7 +13,7 @@ fun ProcessingCardRoute(
onNavigateInputAmount: () -> Unit, onNavigateInputAmount: () -> Unit,
onNavigateProcessing: () -> Unit, onNavigateProcessing: () -> Unit,
onNavigateEmvTransaction: () -> Unit, onNavigateEmvTransaction: () -> Unit,
onNavigateError: (String) -> Unit, onNavigateError: (isSuccess: Boolean, message: String) -> Unit,
onBack: () -> Unit, onBack: () -> Unit,
onShowDecline: (String) -> Unit onShowDecline: (String) -> Unit
) { ) {
@ -31,7 +31,7 @@ fun ProcessingCardRoute(
ProcessingCardUiEvent.NavigateToInputAmount -> onNavigateInputAmount() ProcessingCardUiEvent.NavigateToInputAmount -> onNavigateInputAmount()
ProcessingCardUiEvent.NavigateToProcessing -> onNavigateProcessing() ProcessingCardUiEvent.NavigateToProcessing -> onNavigateProcessing()
ProcessingCardUiEvent.NavigateToEmvTransaction -> onNavigateEmvTransaction() ProcessingCardUiEvent.NavigateToEmvTransaction -> onNavigateEmvTransaction()
is ProcessingCardUiEvent.NavigateToError -> onNavigateError(event.message) is ProcessingCardUiEvent.NavigateToError -> onNavigateError(false,event.message)
is ProcessingCardUiEvent.ShowDeclineAndBack -> { is ProcessingCardUiEvent.ShowDeclineAndBack -> {
onShowDecline(event.message) onShowDecline(event.message)
onBack() onBack()

View File

@ -25,7 +25,7 @@ fun ProcessingRoute(
settlementViewModel: SettlementViewModel, settlementViewModel: SettlementViewModel,
onNavigateTransactionResult: () -> Unit, onNavigateTransactionResult: () -> Unit,
onNavigateSignature: () -> Unit, onNavigateSignature: () -> Unit,
onNavigateError: (String) -> Unit, onNavigateError: (Boolean,String) -> Unit,
onNavigateMain: ()-> Unit onNavigateMain: ()-> Unit
) { ) {
@ -105,7 +105,7 @@ private fun EmvProcessingContent(
sharedViewModel: SharedViewModel, sharedViewModel: SharedViewModel,
emvTransactionViewModel: EmvTransactionProcessViewModel, emvTransactionViewModel: EmvTransactionProcessViewModel,
onNavigateTransactionResult: () -> Unit, onNavigateTransactionResult: () -> Unit,
onNavigateError: (String) -> Unit, onNavigateError: (Boolean,String) -> Unit,
onNavigateMain: () -> Unit onNavigateMain: () -> Unit
) { ) {
val emvTransStatus by emvTransactionViewModel.getTransStatus().observeAsState() val emvTransStatus by emvTransactionViewModel.getTransStatus().observeAsState()
@ -134,13 +134,13 @@ private fun EmvProcessingContent(
TransResultStatus.REVERSAL_SUCCESS -> { TransResultStatus.REVERSAL_SUCCESS -> {
sharedViewModel.payDetail.value = emvTransactionViewModel.payDetailResult.value sharedViewModel.payDetail.value = emvTransactionViewModel.payDetailResult.value
sharedViewModel.set_successFragmentMsg("Reversal success!") sharedViewModel.set_successFragmentMsg("Reversal success!")
onNavigateMain() onNavigateError(true,"Reversal success!")
} }
TransResultStatus.REVERSAL_FAIL -> { TransResultStatus.REVERSAL_FAIL -> {
sharedViewModel.payDetail.value = emvTransactionViewModel.payDetailResult.value sharedViewModel.payDetail.value = emvTransactionViewModel.payDetailResult.value
sharedViewModel.set_errorFragmentMsg("Reversal failed!") sharedViewModel.set_errorFragmentMsg("Reversal failed!")
onNavigateError("Reversal failed!") onNavigateError(false,"Reversal failed!")
} }
TransResultStatus.ERROR, TransResultStatus.ERROR,
@ -149,7 +149,7 @@ private fun EmvProcessingContent(
?.substringAfter(":") ?.substringAfter(":")
?.takeIf { it.isNotBlank() } ?.takeIf { it.isNotBlank() }
?: "Transaction error" ?: "Transaction error"
onNavigateError(message) onNavigateError(false,message)
} }
else -> {} else -> {}