From 3ab6f1569b307b155de6049ad7207e10bdf97567 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 11 Aug 2020 17:35:16 -0300 Subject: [wallet] upgrade wallet-core and adapt payment API --- .../net/taler/wallet/backend/WalletBackendApi.kt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt') diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt index ea8f26f..5ca2255 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt @@ -26,6 +26,8 @@ import android.os.IBinder import android.os.Message import android.os.Messenger import android.util.Log +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.module.kotlin.readValue import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import kotlinx.serialization.KSerializer @@ -166,6 +168,25 @@ class WalletBackendApi( } } + suspend inline fun request( + operation: String, + mapper: ObjectMapper, + noinline args: (JSONObject.() -> JSONObject)? = null + ): WalletResponse = withContext(Dispatchers.Default) { + suspendCoroutine> { cont -> + sendRequest(operation, args?.invoke(JSONObject())) { isError, message -> + val response = if (isError) { + val error: WalletErrorInfo = mapper.readValue(message.toString()) + WalletResponse.Error(error) + } else { + val t: T = mapper.readValue(message.toString()) + WalletResponse.Success(t) + } + cont.resume(response) + } + } + } + fun destroy() { // FIXME: implement this! } -- cgit v1.2.3