From 1016fd3ce67df3cec16236f449f4ebef5ed569b9 Mon Sep 17 00:00:00 2001 From: I Putu Bakta Hari Sudewa <13521150@std.stei.itb.ac.id> Date: Sun, 31 Mar 2024 14:15:00 +0000 Subject: [PATCH] fix: amount field on save transaction unhandled exception --- .../transaction/TransactionViewModel.kt | 2 +- .../fragments/ScanReceiptResultFragment.kt | 47 +++++++++++-------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt b/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt index 2f61bb3..2341bf8 100644 --- a/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt +++ b/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt @@ -56,7 +56,7 @@ class TransactionViewModel( Transaction( title = title, owner = currentUserNim, - amount = Long.MAX_VALUE, + amount = amount, category = category, location = location, ) diff --git a/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt b/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt index f62f7be..ba72717 100644 --- a/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt +++ b/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt @@ -145,7 +145,8 @@ class ScanReceiptResultFragment : Fragment() { val observer = Observer<ScanReceiptResponseItemsWrapper> { response -> if (response.error != null) { - Toast.makeText(this.requireContext(), response.error, Toast.LENGTH_SHORT).show() + Toast.makeText(this.requireContext(), response.error, Toast.LENGTH_SHORT) + .show() Navigation.findNavController(view) .navigate(R.id.action_scanReceiptResultFragment_to_scanReceiptFragment) } else { @@ -211,24 +212,32 @@ class ScanReceiptResultFragment : Fragment() { // Save button listener viewBinding.scanReceiptFormButtonSave.setOnClickListener { - val title = viewBinding.scanReceiptFormTitle.getText().trim() - val amount = viewBinding.scanReceiptFormAmount.getText().trim().toLong() - val location = viewBinding.scanReceiptFormLocationField.text.toString().trim() - val isDataValid = validateInput(title, amount, location) - - if (isDataValid == null) { - // Create new transaction - transactionViewModel.insertTransaction( - title, - TransactionCategory.EXPENSE, - amount, - location, - ) { _, message -> - Toast.makeText(this.requireContext(), message, Toast.LENGTH_SHORT).show() - findNavController().popBackStack(R.id.scanReceiptFragment, false) + try { + val title = viewBinding.scanReceiptFormTitle.getText().trim() + val amount = viewBinding.scanReceiptFormAmount.getText().trim().toLong() + val location = viewBinding.scanReceiptFormLocationField.text.toString().trim() + val isDataValid = validateInput(title, amount, location) + + if (isDataValid == null) { + // Create new transaction + transactionViewModel.insertTransaction( + title, + TransactionCategory.EXPENSE, + amount, + location + ) { _, message -> + Toast.makeText(this.requireContext(), message, Toast.LENGTH_SHORT).show() + findNavController().popBackStack(R.id.scanReceiptFragment, false) + } + } else { + Toast.makeText(this.requireContext(), isDataValid, Toast.LENGTH_SHORT).show() } - } else { - Toast.makeText(this.requireContext(), isDataValid, Toast.LENGTH_SHORT).show() + } catch (e: NumberFormatException) { + Toast.makeText( + this.requireContext(), + "Amount must be a positive number", + Toast.LENGTH_SHORT + ).show() } } } @@ -243,7 +252,7 @@ class ScanReceiptResultFragment : Fragment() { } if (amount < 0) { - return "Amount must be greater than zero" + return "Amount must be a positive number" } if (location == "") { -- GitLab