From b2d47a56a2e65c9be90f54bc7d7c4f90f214bd1f Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 21 Feb 2025 15:45:53 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/data/visa/config/VisaLibLoader.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/data/visa/src/main/kotlin/com/tangem/data/visa/config/VisaLibLoader.kt b/data/visa/src/main/kotlin/com/tangem/data/visa/config/VisaLibLoader.kt index 471f56ea4e..f8935ef774 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/visa/config/VisaLibLoader.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/visa/config/VisaLibLoader.kt @@ -16,8 +16,10 @@ internal class VisaLibLoader @Inject constructor( private val createMutex = Mutex() private val createMutex2 = Mutex() + @Volatile private var config: VisaConfig? = null + @Volatile private var provider: VisaContractInfoProvider? = null suspend fun getOrCreateConfig(): VisaConfig = config ?: getOrLoadConfig() @@ -25,6 +27,8 @@ internal class VisaLibLoader @Inject constructor( suspend fun getOrCreateProvider(): VisaContractInfoProvider = provider ?: createProvider() private suspend fun createProvider(): VisaContractInfoProvider = createMutex.withLock { + if (provider != null) return@withLock requireNotNull(provider) + val config = getOrLoadConfig() provider = VisaContractInfoProvider.Builder( @@ -49,10 +53,12 @@ internal class VisaLibLoader @Inject constructor( } private suspend fun getOrLoadConfig(): VisaConfig = createMutex2.withLock { + if (config != null) return@withLock requireNotNull(config) + config = assetLoader.load(VISA_CONFIG_FILE_NAME) - return requireNotNull(config) { - "Visa config is not found" + return@withLock requireNotNull(config) { + "Visa config is not loaded" } }