From f0670e2f3936f0223c02e9ec0d0de52f31a3539f Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 11 Aug 2020 09:41:40 -0300 Subject: [pos] Improve coroutine-based merchant library access --- .../net/taler/merchantpos/refund/RefundManager.kt | 24 ++++++++++------------ 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'merchant-terminal/src/main/java/net/taler/merchantpos/refund') diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/refund/RefundManager.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/refund/RefundManager.kt index ea2d398..25c7c5e 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/refund/RefundManager.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/refund/RefundManager.kt @@ -20,9 +20,9 @@ import androidx.annotation.UiThread import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import net.taler.common.Amount +import net.taler.common.assertUiThread import net.taler.merchantlib.MerchantApi import net.taler.merchantlib.OrderHistoryEntry import net.taler.merchantlib.RefundRequest @@ -65,27 +65,25 @@ class RefundManager( } @UiThread - internal fun refund(item: OrderHistoryEntry, amount: Amount, reason: String) { + internal fun refund(item: OrderHistoryEntry, amount: Amount, reason: String) = scope.launch { val merchantConfig = configManager.merchantConfig!! val request = RefundRequest(amount, reason) - scope.launch(Dispatchers.IO) { - api.giveRefund(merchantConfig, item.orderId, request).handle(::onRefundError) { - val result = RefundResult.Success( - refundUri = it.talerRefundUri, - item = item, - amount = amount, - reason = reason - ) - mRefundResult.postValue(result) - } + api.giveRefund(merchantConfig, item.orderId, request).handle(::onRefundError) { + assertUiThread() + mRefundResult.value = RefundResult.Success( + refundUri = it.talerRefundUri, + item = item, + amount = amount, + reason = reason + ) } } @UiThread private fun onRefundError(msg: String) { + assertUiThread() if (msg.contains("2602")) { mRefundResult.postValue(RefundResult.AlreadyRefunded) } else mRefundResult.postValue(RefundResult.Error(msg)) } - } -- cgit v1.2.3