diff options
author | Torsten Grote <t@grobox.de> | 2020-08-11 17:35:16 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2020-08-11 17:35:16 -0300 |
commit | 3ab6f1569b307b155de6049ad7207e10bdf97567 (patch) | |
tree | 5fb80477e94ff8c54b7f91db7004d746dcb54151 /wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt | |
parent | d13be7c5c1be2492d38959a29e1b1c33df4938ff (diff) | |
download | taler-android-3ab6f1569b307b155de6049ad7207e10bdf97567.tar.gz taler-android-3ab6f1569b307b155de6049ad7207e10bdf97567.tar.bz2 taler-android-3ab6f1569b307b155de6049ad7207e10bdf97567.zip |
[wallet] upgrade wallet-core and adapt payment API
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt | 21 |
1 files changed, 21 insertions, 0 deletions
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 <reified T> request( + operation: String, + mapper: ObjectMapper, + noinline args: (JSONObject.() -> JSONObject)? = null + ): WalletResponse<T> = withContext(Dispatchers.Default) { + suspendCoroutine<WalletResponse<T>> { cont -> + sendRequest(operation, args?.invoke(JSONObject())) { isError, message -> + val response = if (isError) { + val error: WalletErrorInfo = mapper.readValue(message.toString()) + WalletResponse.Error<T>(error) + } else { + val t: T = mapper.readValue(message.toString()) + WalletResponse.Success(t) + } + cont.resume(response) + } + } + } + fun destroy() { // FIXME: implement this! } |