Updated on 2026-08-14
This commit is contained in:
commit
e52f9de341
987 changed files with 20247 additions and 8171 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.blockchainsdk
|
||||
|
||||
import com.tangem.blockchain.common.WalletManagerFactory
|
||||
import com.tangem.blockchain.common.memo.MemoValidatorFactory
|
||||
|
||||
/**
|
||||
* Blockchain SDK components factory
|
||||
|
|
@ -14,4 +15,7 @@ interface BlockchainSDKFactory {
|
|||
|
||||
/** Get [WalletManagerFactory] synchronously */
|
||||
suspend fun getWalletManagerFactorySync(): WalletManagerFactory?
|
||||
|
||||
/** Get [MemoValidatorFactory] synchronously */
|
||||
suspend fun getMemoValidatorFactorySync(): MemoValidatorFactory?
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.tangem.blockchainsdk
|
|||
|
||||
import com.tangem.blockchain.common.BlockchainSdkConfig
|
||||
import com.tangem.blockchain.common.WalletManagerFactory
|
||||
import com.tangem.blockchain.common.memo.MemoValidatorFactory
|
||||
import com.tangem.blockchainsdk.providers.BlockchainProvidersTypesManager
|
||||
import com.tangem.datasource.local.config.providers.models.ProviderModel
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
|
|
@ -32,6 +33,7 @@ internal class DefaultBlockchainSDKFactory(
|
|||
private val mainScope = CoroutineScope(dispatchers.main)
|
||||
|
||||
private val walletManagerFactory: Flow<WalletManagerFactory?> = createWalletManagerFactory()
|
||||
private val memoValidatorFactory: Flow<MemoValidatorFactory?> = createMemoValidatorFactory()
|
||||
|
||||
override suspend fun init() {
|
||||
coroutineScope {
|
||||
|
|
@ -41,6 +43,8 @@ internal class DefaultBlockchainSDKFactory(
|
|||
|
||||
override suspend fun getWalletManagerFactorySync(): WalletManagerFactory? = walletManagerFactory.firstOrNull()
|
||||
|
||||
override suspend fun getMemoValidatorFactorySync(): MemoValidatorFactory? = memoValidatorFactory.firstOrNull()
|
||||
|
||||
private fun createWalletManagerFactory(): Flow<WalletManagerFactory?> {
|
||||
return combine(
|
||||
flow = flowOf(blockchainSdkConfig),
|
||||
|
|
@ -51,4 +55,14 @@ internal class DefaultBlockchainSDKFactory(
|
|||
// don't use Lazily because some features (WC) require initialized factory on app started
|
||||
.stateIn(scope = mainScope, started = SharingStarted.Eagerly, initialValue = null)
|
||||
}
|
||||
|
||||
private fun createMemoValidatorFactory(): Flow<MemoValidatorFactory?> {
|
||||
return combine(
|
||||
flow = flowOf(blockchainSdkConfig),
|
||||
flow2 = blockchainProvidersTypesManager.get(),
|
||||
) { config, providerTypes ->
|
||||
MemoValidatorFactory(config = config, blockchainProviderTypes = providerTypes)
|
||||
}
|
||||
.stateIn(scope = mainScope, started = SharingStarted.Eagerly, initialValue = null)
|
||||
}
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ import com.tangem.blockchain.common.WalletManagerFactory
|
|||
import com.tangem.blockchain.common.datastorage.BlockchainDataStorage
|
||||
import com.tangem.blockchain.common.logging.BlockchainSDKLogger
|
||||
import com.tangem.blockchainsdk.providers.BlockchainProviderTypes
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
|
|
@ -27,7 +27,7 @@ internal class WalletManagerFactoryCreator @Inject constructor(
|
|||
) {
|
||||
|
||||
fun create(config: BlockchainSdkConfig, blockchainProviderTypes: BlockchainProviderTypes): WalletManagerFactory {
|
||||
Timber.i("Create WalletManagerFactory")
|
||||
TangemLogger.i("Create WalletManagerFactory")
|
||||
|
||||
return WalletManagerFactory(
|
||||
config = config,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import com.tangem.blockchainsdk.providers.BlockchainProviderTypes
|
|||
import com.tangem.blockchainsdk.utils.fromNetworkId
|
||||
import com.tangem.blockchainsdk.utils.toNetworkId
|
||||
import com.tangem.utils.converter.TwoWayConverter
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
/**
|
||||
* Converts [BlockchainProvidersResponse] to [BlockchainProviderTypes] and vice versa
|
||||
|
|
@ -23,7 +23,7 @@ internal object BlockchainProviderTypesConverter :
|
|||
val providerTypes = ProviderTypeConverter.convertList(input = blockchainProviders)
|
||||
|
||||
providerTypes.forEach {
|
||||
if (it == null) Timber.e("$blockchain provider type is not supported")
|
||||
if (it == null) TangemLogger.e("$blockchain provider type is not supported")
|
||||
}
|
||||
|
||||
blockchain to providerTypes.filterNotNull()
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import com.tangem.datasource.api.tangemTech.TangemTechApi
|
|||
import com.tangem.datasource.local.config.providers.BlockchainProvidersStorage
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.coroutines.runCatching
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ internal class BlockchainProvidersResponseLoader @Inject constructor(
|
|||
)
|
||||
},
|
||||
onFailure = { throwable ->
|
||||
Timber.e(throwable, "Failed to load blockchain provider types from backend")
|
||||
TangemLogger.e("Failed to load blockchain provider types from backend", throwable)
|
||||
localResponse.ifEmpty { null }
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import com.tangem.blockchainsdk.BlockchainProvidersResponse
|
|||
import com.tangem.core.analytics.api.AnalyticsExceptionHandler
|
||||
import com.tangem.core.analytics.models.ExceptionAnalyticsEvent
|
||||
import com.tangem.datasource.local.config.providers.models.ProviderModel
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
|
|
@ -81,7 +81,7 @@ internal class BlockchainProvidersResponseMerger @Inject internal constructor(
|
|||
"Remote config does not contain some blockchains or providers information",
|
||||
)
|
||||
|
||||
Timber.e(exception)
|
||||
TangemLogger.e("Error", exception)
|
||||
|
||||
analyticsExceptionHandler.sendException(
|
||||
ExceptionAnalyticsEvent(
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import com.tangem.blockchainsdk.converters.BlockchainProviderTypesConverter
|
|||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import kotlinx.coroutines.flow.map
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
/**
|
||||
* Implementation of [BlockchainProvidersTypesManager] in DEV environment
|
||||
|
|
@ -36,7 +36,7 @@ internal class DevBlockchainProvidersTypesManager(
|
|||
val changed = changedBlockchainProvidersStore.data.firstOrNull().orEmpty()
|
||||
|
||||
if (changed.isEmpty()) {
|
||||
Timber.i("Initialize ChangedBlockchainProvidersStore")
|
||||
TangemLogger.i("Initialize ChangedBlockchainProvidersStore")
|
||||
changedBlockchainProvidersStore.updateData {
|
||||
BlockchainProviderTypesConverter.convertBack(initial)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package com.tangem.blockchainsdk.providers
|
|||
|
||||
import com.tangem.blockchainsdk.converters.BlockchainProviderTypesConverter
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
|
|
@ -26,11 +26,11 @@ internal class ProdBlockchainProvidersTypesManager @Inject constructor(
|
|||
val response = blockchainProvidersResponseLoader.load()
|
||||
|
||||
if (response == null) {
|
||||
Timber.e("Error loading BlockchainProviderTypes")
|
||||
TangemLogger.e("Error loading BlockchainProviderTypes")
|
||||
return
|
||||
}
|
||||
|
||||
Timber.i("Update BlockchainProviderTypes")
|
||||
TangemLogger.i("Update BlockchainProviderTypes")
|
||||
|
||||
blockchainProviderTypesStore.store(
|
||||
value = BlockchainProviderTypesConverter.convert(response),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue