From f0e923cee082015e21260e20d42c88456160c7d6 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 30 Aug 2023 16:40:20 +0200 Subject: [wallet] try not to instantiate TalerWalletCore more than once --- wallet/src/main/AndroidManifest.xml | 2 +- wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'wallet') diff --git a/wallet/src/main/AndroidManifest.xml b/wallet/src/main/AndroidManifest.xml index 96c2958..aee1525 100644 --- a/wallet/src/main/AndroidManifest.xml +++ b/wallet/src/main/AndroidManifest.xml @@ -48,7 +48,7 @@ diff --git a/wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt b/wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt index ae338e8..b2f1f10 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt @@ -22,6 +22,7 @@ import kotlinx.serialization.json.Json import net.taler.qtart.TalerWalletCore import net.taler.wallet.BuildConfig import org.json.JSONObject +import java.util.concurrent.atomic.AtomicBoolean import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @@ -40,12 +41,16 @@ class BackendManager( val json = Json { ignoreUnknownKeys = true } + @JvmStatic + private val initialized = AtomicBoolean(false) } private val walletCore = TalerWalletCore() private val requestManager = RequestManager() init { + // TODO using Dagger/Hilt and @Singleton would be nice as well + if (initialized.getAndSet(true)) error("Already initialized") walletCore.setMessageHandler { onMessageReceived(it) } if (BuildConfig.DEBUG) walletCore.setStdoutHandler { Log.d(TAG_CORE, it) -- cgit v1.2.3