diff options
author | Torsten Grote <t@grobox.de> | 2023-04-11 14:34:32 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2023-04-11 14:34:32 -0300 |
commit | 7e8d39aa6f7a97ae14cb90db12f3ab83c9c5a343 (patch) | |
tree | e1db65d48e8dd0df9e43189e496ded0792d05f1a /merchant-terminal/src/main/java/net | |
parent | d9985f0db0c8c603a6814b332328b43b97d1d367 (diff) | |
download | taler-android-7e8d39aa6f7a97ae14cb90db12f3ab83c9c5a343.tar.gz taler-android-7e8d39aa6f7a97ae14cb90db12f3ab83c9c5a343.tar.bz2 taler-android-7e8d39aa6f7a97ae14cb90db12f3ab83c9c5a343.zip |
[pos] Keep checking payment status as long as payment fragment is shown
don't cancel on network errors and don't time-out. We keep checking as long as the users cancels or navigates back from the screen.
Diffstat (limited to 'merchant-terminal/src/main/java/net')
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt | 8 | ||||
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt index 02f66fa..efcb158 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt @@ -36,10 +36,9 @@ import net.taler.merchantpos.R import net.taler.merchantpos.config.ConfigManager import net.taler.merchantpos.order.Order import java.util.concurrent.TimeUnit.HOURS -import java.util.concurrent.TimeUnit.MINUTES import java.util.concurrent.TimeUnit.SECONDS -private val TIMEOUT = MINUTES.toMillis(2) +private const val TIMEOUT = Long.MAX_VALUE private val CHECK_INTERVAL = SECONDS.toMillis(1) class PaymentManager( @@ -85,7 +84,10 @@ class PaymentManager( private fun checkPayment(orderId: String) = scope.launch { val merchantConfig = configManager.merchantConfig!! - api.checkOrder(merchantConfig, orderId).handle(::onNetworkError) { response -> + api.checkOrder(merchantConfig, orderId).handle({ error -> + // don't call onNetworkError() to not cancel payment, just keep trying + Log.d(TAG, "Network error: $error") + }) { response -> assertUiThread() if (!isActive) return@handle // don't continue if job was cancelled val currentValue = requireNotNull(mPayment.value) diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt index 201c9cf..443ca91 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt @@ -55,9 +55,9 @@ class ProcessPaymentFragment : Fragment() { val introRes = if (hasNfc(requireContext())) R.string.payment_intro_nfc else R.string.payment_intro ui.payIntroView.setText(introRes) - paymentManager.payment.observe(viewLifecycleOwner, { payment -> + paymentManager.payment.observe(viewLifecycleOwner) { payment -> onPaymentStateChanged(payment) - }) + } ui.cancelPaymentButton.setOnClickListener { onPaymentCancel() } |