Updated on 2026-08-14
This commit is contained in:
commit
9b53fd4f0c
909 changed files with 14900 additions and 6085 deletions
|
|
@ -2,10 +2,7 @@
|
|||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>MultilineLambdaItParameter:DefaultWalletManagersFacade.kt$DefaultWalletManagersFacade${ Token( name = it.name, symbol = it.symbol, contractAddress = it.contractAddress, decimals = it.decimals, id = it.id, ) }</ID>
|
||||
<ID>MultilineLambdaItParameter:UpdateWalletManagerResultFactory.kt$UpdateWalletManagerResultFactory${ createCurrencyTransaction( txHistoryItemConverter = txHistoryItemConverter, data = it, ) }</ID>
|
||||
<ID>NamedArguments:DefaultWalletManagersFacade.kt$DefaultWalletManagersFacade$getAndUpdateWalletManager(userWallet, blockchain, derivationPath, extraTokens)</ID>
|
||||
<ID>UnnecessaryLet:DefaultWalletManagersFacade.kt$DefaultWalletManagersFacade$let(txHistoryStateConverter::convert)</ID>
|
||||
<ID>UnsafeCallOnNullableType:WalletManagerFactory.kt$blockchain.getTestnetVersion()!!</ID>
|
||||
<ID>UnsafeCallOnNullableType:WalletManagerFactory.kt$scanResponse.secondTwinPublicKey!!</ID>
|
||||
</CurrentIssues>
|
||||
|
|
|
|||
|
|
@ -85,7 +85,12 @@ internal class DefaultWalletManagersFacade @Inject constructor(
|
|||
val blockchain = network.toBlockchain()
|
||||
val derivationPath = network.derivationPath.value
|
||||
|
||||
return getAndUpdateWalletManager(userWallet, blockchain, derivationPath, extraTokens)
|
||||
return getAndUpdateWalletManager(
|
||||
userWallet = userWallet,
|
||||
blockchain = blockchain,
|
||||
derivationPath = derivationPath,
|
||||
extraTokens = extraTokens,
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun remove(userWalletId: UserWalletId, networks: Set<Network>) {
|
||||
|
|
@ -123,18 +128,18 @@ internal class DefaultWalletManagersFacade @Inject constructor(
|
|||
if (tokenInfos.isEmpty()) return
|
||||
|
||||
tokenInfos
|
||||
.groupBy { it.network }
|
||||
.groupBy(TokenInfo::network)
|
||||
.forEach { (network, tokenInfoList) ->
|
||||
removeTokens(
|
||||
userWalletId = userWalletId,
|
||||
network = network,
|
||||
networkTokens = tokenInfoList.map {
|
||||
networkTokens = tokenInfoList.map { tokenInfo ->
|
||||
Token(
|
||||
name = it.name,
|
||||
symbol = it.symbol,
|
||||
contractAddress = it.contractAddress,
|
||||
decimals = it.decimals,
|
||||
id = it.id,
|
||||
name = tokenInfo.name,
|
||||
symbol = tokenInfo.symbol,
|
||||
contractAddress = tokenInfo.contractAddress,
|
||||
decimals = tokenInfo.decimals,
|
||||
id = tokenInfo.id,
|
||||
)
|
||||
},
|
||||
)
|
||||
|
|
@ -215,24 +220,24 @@ internal class DefaultWalletManagersFacade @Inject constructor(
|
|||
"Unable to get a wallet manager for blockchain: ${currency.network}"
|
||||
}
|
||||
|
||||
return walletManager
|
||||
.getTransactionHistoryState(
|
||||
address = walletManager.wallet.address,
|
||||
filterType = when (currency) {
|
||||
is CryptoCurrency.Coin -> TransactionHistoryRequest.FilterType.Coin
|
||||
is CryptoCurrency.Token -> {
|
||||
val blockchainToken = Token(
|
||||
name = currency.name,
|
||||
symbol = currency.symbol,
|
||||
contractAddress = currency.contractAddress,
|
||||
decimals = currency.decimals,
|
||||
id = currency.id.rawCurrencyId?.value,
|
||||
)
|
||||
TransactionHistoryRequest.FilterType.Contract(blockchainToken)
|
||||
}
|
||||
},
|
||||
)
|
||||
.let(txHistoryStateConverter::convert)
|
||||
val transactionHistoryState = walletManager.getTransactionHistoryState(
|
||||
address = walletManager.wallet.address,
|
||||
filterType = when (currency) {
|
||||
is CryptoCurrency.Coin -> TransactionHistoryRequest.FilterType.Coin
|
||||
is CryptoCurrency.Token -> {
|
||||
val blockchainToken = Token(
|
||||
name = currency.name,
|
||||
symbol = currency.symbol,
|
||||
contractAddress = currency.contractAddress,
|
||||
decimals = currency.decimals,
|
||||
id = currency.id.rawCurrencyId?.value,
|
||||
)
|
||||
TransactionHistoryRequest.FilterType.Contract(blockchainToken)
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
return txHistoryStateConverter.convert(transactionHistoryState)
|
||||
}
|
||||
|
||||
override suspend fun getTxHistoryItems(
|
||||
|
|
@ -368,7 +373,7 @@ internal class DefaultWalletManagersFacade @Inject constructor(
|
|||
blockchain: Blockchain,
|
||||
derivationPath: String?,
|
||||
): WalletManager? {
|
||||
getWmInitializationMutex(blockchain, derivationPath).withLock {
|
||||
getWmInitializationMutex(userWalletId, blockchain, derivationPath).withLock {
|
||||
val userWallet = getUserWallet(userWalletId)
|
||||
|
||||
var walletManager = walletManagersStore.getSyncOrNull(
|
||||
|
|
@ -740,15 +745,24 @@ internal class DefaultWalletManagersFacade @Inject constructor(
|
|||
return initializableAccountWalletManger.accountInitializationState == InitializableAccount.State.INITIALIZED
|
||||
}
|
||||
|
||||
private fun getWmInitializationMutex(blockchain: Blockchain, derivationPath: String?): Mutex {
|
||||
val key = createMutexMapKey(blockchain, derivationPath)
|
||||
private fun getWmInitializationMutex(
|
||||
userWalletId: UserWalletId,
|
||||
blockchain: Blockchain,
|
||||
derivationPath: String?,
|
||||
): Mutex {
|
||||
val key = createMutexMapKey(userWalletId, blockchain, derivationPath)
|
||||
return wmInitializationMutexes.computeIfAbsent(key) {
|
||||
Mutex()
|
||||
}
|
||||
}
|
||||
|
||||
private fun createMutexMapKey(blockchain: Blockchain, derivationPath: String?): String {
|
||||
return blockchain.toNetworkId() + "|" + derivationPath
|
||||
private fun createMutexMapKey(userWalletId: UserWalletId, blockchain: Blockchain, derivationPath: String?): String {
|
||||
return listOf(
|
||||
userWalletId.stringValue,
|
||||
blockchain.toNetworkId(),
|
||||
derivationPath,
|
||||
)
|
||||
.joinToString(separator = "|")
|
||||
}
|
||||
|
||||
private fun updateWalletManagerTokensIfNeeded(walletManager: WalletManager, tokens: Set<CryptoCurrency.Token>) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue