summaryrefslogtreecommitdiff
path: root/merchant-terminal/src/main/java/net
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2023-04-11 17:33:16 -0300
committerTorsten Grote <t@grobox.de>2023-04-11 17:33:16 -0300
commit7cd48e38a0d502fb0748c9b1e04738be43c8c1cf (patch)
treed96623f75fc3be4096ff2af16fbc8279c6bc6554 /merchant-terminal/src/main/java/net
parent14cd3ad23f6e7008fae506df1e8894c977f61516 (diff)
downloadtaler-android-7cd48e38a0d502fb0748c9b1e04738be43c8c1cf.tar.gz
taler-android-7cd48e38a0d502fb0748c9b1e04738be43c8c1cf.tar.bz2
taler-android-7cd48e38a0d502fb0748c9b1e04738be43c8c1cf.zip
[pos] Don't crash when adding custom product with huge invalid amount
Diffstat (limited to 'merchant-terminal/src/main/java/net')
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/CustomDialogFragment.kt13
1 files changed, 12 insertions, 1 deletions
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/CustomDialogFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/CustomDialogFragment.kt
index bf14aae..45aaf06 100644
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/CustomDialogFragment.kt
+++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/CustomDialogFragment.kt
@@ -20,10 +20,14 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Toast
+import android.widget.Toast.LENGTH_LONG
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
import net.taler.common.Amount
+import net.taler.common.AmountParserException
import net.taler.merchantpos.MainViewModel
+import net.taler.merchantpos.R
import net.taler.merchantpos.config.ConfigProduct
import net.taler.merchantpos.databinding.FragmentCustomDialogBinding
@@ -52,9 +56,16 @@ class CustomDialogFragment : DialogFragment() {
ui.addButton.setOnClickListener {
val currentOrderId =
viewModel.orderManager.currentOrderId.value ?: return@setOnClickListener
+ val amount = try {
+ Amount.fromString(currency, ui.amountLayout.editText!!.text.toString())
+ } catch (e: AmountParserException) {
+ Toast.makeText(requireContext(), R.string.refund_error_invalid_amount, LENGTH_LONG)
+ .show()
+ return@setOnClickListener
+ }
val product = ConfigProduct(
description = ui.productNameLayout.editText!!.text.toString(),
- price = Amount.fromString(currency, ui.amountLayout.editText!!.text.toString()),
+ price = amount,
categories = listOf(Int.MIN_VALUE),
)
viewModel.orderManager.addProduct(currentOrderId, product)