summaryrefslogtreecommitdiff
path: root/merchant-terminal/src/main/java/net/taler/merchantpos/history/RefundFragment.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-08-04 09:46:38 -0300
committerTorsten Grote <t@grobox.de>2020-08-04 09:46:38 -0300
commit35f7ed512ed7445362d6caee1bf60441f4ce979e (patch)
tree08fb02c802ff36065dd85fb9dcb95a0adabc03c3 /merchant-terminal/src/main/java/net/taler/merchantpos/history/RefundFragment.kt
parentd3a035c59c508b7b0ef3c06a1b0f1f3c0a077bb8 (diff)
downloadtaler-android-35f7ed512ed7445362d6caee1bf60441f4ce979e.tar.gz
taler-android-35f7ed512ed7445362d6caee1bf60441f4ce979e.tar.bz2
taler-android-35f7ed512ed7445362d6caee1bf60441f4ce979e.zip
[pos] Implement new refund API (untested since there is no wallet support)
Also do a bit of code cleanup and minor refactorings This also removes the volley HTTP library which is not needed anymore
Diffstat (limited to 'merchant-terminal/src/main/java/net/taler/merchantpos/history/RefundFragment.kt')
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/history/RefundFragment.kt109
1 files changed, 0 insertions, 109 deletions
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/history/RefundFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/history/RefundFragment.kt
deleted file mode 100644
index 17d78f6..0000000
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/history/RefundFragment.kt
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * This file is part of GNU Taler
- * (C) 2020 Taler Systems S.A.
- *
- * GNU Taler is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 3, or (at your option) any later version.
- *
- * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-package net.taler.merchantpos.history
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.annotation.StringRes
-import androidx.fragment.app.Fragment
-import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.Observer
-import androidx.navigation.fragment.findNavController
-import com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_LONG
-import com.google.android.material.snackbar.Snackbar
-import kotlinx.android.synthetic.main.fragment_refund.*
-import net.taler.common.Amount
-import net.taler.common.AmountParserException
-import net.taler.common.fadeIn
-import net.taler.common.fadeOut
-import net.taler.common.navigate
-import net.taler.merchantlib.OrderHistoryEntry
-import net.taler.merchantpos.MainViewModel
-import net.taler.merchantpos.R
-import net.taler.merchantpos.history.RefundFragmentDirections.Companion.actionRefundFragmentToRefundUriFragment
-import net.taler.merchantpos.history.RefundResult.AlreadyRefunded
-import net.taler.merchantpos.history.RefundResult.Error
-import net.taler.merchantpos.history.RefundResult.PastDeadline
-import net.taler.merchantpos.history.RefundResult.Success
-
-class RefundFragment : Fragment() {
-
- private val model: MainViewModel by activityViewModels()
- private val refundManager by lazy { model.refundManager }
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- return inflater.inflate(R.layout.fragment_refund, container, false)
- }
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- val item = refundManager.toBeRefunded ?: throw IllegalStateException()
- amountInputView.setText(item.amount.amountStr)
- currencyView.text = item.amount.currency
- abortButton.setOnClickListener { findNavController().navigateUp() }
- refundButton.setOnClickListener { onRefundButtonClicked(item) }
-
- refundManager.refundResult.observe(viewLifecycleOwner, Observer { result ->
- onRefundResultChanged(result)
- })
- }
-
- private fun onRefundButtonClicked(item: OrderHistoryEntry) {
- val inputAmount = try {
- Amount.fromString(item.amount.currency, amountInputView.text.toString())
- } catch (e: AmountParserException) {
- amountView.error = getString(R.string.refund_error_invalid_amount)
- return
- }
- if (inputAmount > item.amount) {
- amountView.error = getString(R.string.refund_error_max_amount, item.amount.amountStr)
- return
- }
- if (inputAmount.isZero()) {
- amountView.error = getString(R.string.refund_error_zero)
- return
- }
- amountView.error = null
- refundButton.fadeOut()
- progressBar.fadeIn()
- refundManager.refund(item, inputAmount, reasonInputView.text.toString())
- }
-
- private fun onRefundResultChanged(result: RefundResult?): Any = when (result) {
- Error -> onError(R.string.refund_error_backend)
- PastDeadline -> onError(R.string.refund_error_deadline)
- AlreadyRefunded -> onError(R.string.refund_error_already_refunded)
- is Success -> {
- progressBar.fadeOut()
- refundButton.fadeIn()
- navigate(actionRefundFragmentToRefundUriFragment())
- }
- null -> { // no-op
- }
- }
-
- private fun onError(@StringRes res: Int) {
- Snackbar.make(requireView(), res, LENGTH_LONG).show()
- progressBar.fadeOut()
- refundButton.fadeIn()
- }
-
-}