From 82e3fc24512128176e93c146cf01b5deaffb75d7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 26 Nov 2025 17:00:41 +0400 Subject: [PATCH] Updated on 2026-08-14 --- detekt_baseline_report.txt | 17 +++++--------- domain/swap/detekt-baseline-debug.xml | 8 ------- .../swap/usecase/GetSwapPairsUseCase.kt | 18 +++++++++------ .../usecase/GetSwapSupportedPairsUseCase.kt | 22 +++++++++++-------- domain/yield-supply/detekt-baseline-debug.xml | 8 ------- .../YieldSupplyGetProtocolBalanceUseCase.kt | 2 +- .../YieldSupplyGetRewardsBalanceUseCase.kt | 12 ++++++---- .../impl/detekt-baseline-debug.xml | 8 ------- .../CreateWalletSelectionModel.kt | 4 ++-- .../entity/CreateWalletSelectionUM.kt | 2 +- .../ui/CreateWalletSelectionContent.kt | 8 +++---- .../stories/impl/detekt-baseline-debug.xml | 8 ------- .../stories/impl/analytics/StoriesEvents.kt | 2 +- .../stories/impl/model/StoriesModel.kt | 9 ++++---- .../domain/models/detekt-baseline-debug.xml | 8 ------- .../domain/models/domain/ExchangeStatus.kt | 2 +- .../models/ui/TokensDataStateExpress.kt | 14 ++++++++++-- 17 files changed, 64 insertions(+), 88 deletions(-) delete mode 100644 domain/swap/detekt-baseline-debug.xml delete mode 100644 domain/yield-supply/detekt-baseline-debug.xml delete mode 100644 features/create-wallet-selection/impl/detekt-baseline-debug.xml delete mode 100644 features/stories/impl/detekt-baseline-debug.xml delete mode 100644 features/swap/domain/models/detekt-baseline-debug.xml diff --git a/detekt_baseline_report.txt b/detekt_baseline_report.txt index 1f11fd1571..ce40f10ef0 100644 --- a/detekt_baseline_report.txt +++ b/detekt_baseline_report.txt @@ -1,7 +1,7 @@ ========================================== Detekt Baseline Updater & Issue Counter ========================================== -Date: 2025-11-26 11:32:37 +Date: 2025-11-26 17:43:14 Step 1: Running detekt to check for new issues... @@ -17,13 +17,13 @@ Counting issues in baseline files... ========================================== Summary: - Total Issues: 1685 - Modules with Issues: 73 - Average Issues per Module: 23 + Total Issues: 1675 + Modules with Issues: 68 + Average Issues per Module: 24 Progress: - Fixed: 117 out of 1802 (6%) - Remaining: 1685 + Fixed: 127 out of 1802 (7%) + Remaining: 1675 ========================================== All Modules with Issues (sorted by count) @@ -99,9 +99,4 @@ domain/card 3 data/feedback 3 common/routing 3 features/yield-supply/api 2 -features/swap/domain/models 2 -features/stories/impl 2 -features/create-wallet-selection/impl 2 -domain/yield-supply 2 -domain/swap 2 ──────────────────────────────────────────────────────────────── \ No newline at end of file diff --git a/domain/swap/detekt-baseline-debug.xml b/domain/swap/detekt-baseline-debug.xml deleted file mode 100644 index 950588cc6a..0000000000 --- a/domain/swap/detekt-baseline-debug.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - CouldBeSequence:GetSwapPairsUseCase.kt$GetSwapPairsUseCase$filter { pair -> filteringCurrency(pair).currency.id.rawCurrencyId == initialCurrency.id.rawCurrencyId } - CouldBeSequence:GetSwapSupportedPairsUseCase.kt$GetSwapSupportedPairsUseCase$filter { pair -> filteringCurrency(pair).currency.id.rawCurrencyId == initialCurrency.id.rawCurrencyId } - - diff --git a/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapPairsUseCase.kt b/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapPairsUseCase.kt index c45209f0ad..09bd863c48 100644 --- a/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapPairsUseCase.kt +++ b/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapPairsUseCase.kt @@ -63,14 +63,18 @@ class GetSwapPairsUseCase( groupingCurrency: (SwapPairModel) -> CryptoCurrencyStatus, cryptoCurrencyStatusList: List, ): SwapCurrenciesGroup { - val availableCryptoCurrencies = filter { pair -> - filteringCurrency(pair).currency.id.rawCurrencyId == initialCurrency.id.rawCurrencyId - }.filter { pair -> - // Search available to swap currency - cryptoCurrencyStatusList.any { currencyStatus -> - currencyStatus.currency.id == pair.to.currency.id + val availableCryptoCurrencies = asSequence() + .filter { pair -> + filteringCurrency(pair).currency.id.rawCurrencyId == initialCurrency.id.rawCurrencyId } - }.map { pair -> SwapCryptoCurrency(groupingCurrency(pair), pair.providers) } + .filter { pair -> + // Search available to swap currency + cryptoCurrencyStatusList.any { currencyStatus -> + currencyStatus.currency.id == pair.to.currency.id + } + } + .map { pair -> SwapCryptoCurrency(groupingCurrency(pair), pair.providers) } + .toList() val unavailableCryptoCurrencies = cryptoCurrencyStatusList - availableCryptoCurrencies.map { it.currencyStatus }.toSet() diff --git a/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt b/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt index f2d6c9a4c4..7cd009b31b 100644 --- a/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt +++ b/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt @@ -59,16 +59,20 @@ class GetSwapSupportedPairsUseCase( groupingCurrency: (SwapPairModel) -> CryptoCurrencyStatus, cryptoCurrencyList: List, ): SwapCurrenciesGroup { - val availableCryptoCurrencies = filter { pair -> - filteringCurrency(pair).currency.id.rawCurrencyId == initialCurrency.id.rawCurrencyId - }.filter { pair -> - // Search available to swap currency - cryptoCurrencyList.any { currencyStatus -> - // Allowed only on networks without tx extras (e.i. memo and destination tag) - val isExtrasSupported = currencyStatus.network.transactionExtrasType.isTxExtrasSupported() - currencyStatus.id == pair.to.currency.id && !isExtrasSupported + val availableCryptoCurrencies = asSequence() + .filter { pair -> + filteringCurrency(pair).currency.id.rawCurrencyId == initialCurrency.id.rawCurrencyId } - }.map { pair -> SwapCryptoCurrency(groupingCurrency(pair), pair.providers) } + .filter { pair -> + // Search available to swap currency + cryptoCurrencyList.any { currencyStatus -> + // Allowed only on networks without tx extras (e.i. memo and destination tag) + val isExtrasSupported = currencyStatus.network.transactionExtrasType.isTxExtrasSupported() + currencyStatus.id == pair.to.currency.id && !isExtrasSupported + } + } + .map { pair -> SwapCryptoCurrency(groupingCurrency(pair), pair.providers) } + .toList() val unavailableCryptoCurrencies = cryptoCurrencyList - availableCryptoCurrencies.map { it.currencyStatus.currency }.toSet() diff --git a/domain/yield-supply/detekt-baseline-debug.xml b/domain/yield-supply/detekt-baseline-debug.xml deleted file mode 100644 index 7bb0bea0e1..0000000000 --- a/domain/yield-supply/detekt-baseline-debug.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - NestedScopeFunctions:YieldSupplyGetRewardsBalanceUseCase.kt$YieldSupplyGetRewardsBalanceUseCase$let { rate -> amt.multiply(rate) } - UnnecessaryNotNullCheck:YieldSupplyGetProtocolBalanceUseCase.kt$YieldSupplyGetProtocolBalanceUseCase$requireNotNull(cryptoCurrency as CryptoCurrency.Token) - - diff --git a/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetProtocolBalanceUseCase.kt b/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetProtocolBalanceUseCase.kt index 3bc5de3b71..ea8b134aa2 100644 --- a/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetProtocolBalanceUseCase.kt +++ b/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetProtocolBalanceUseCase.kt @@ -17,7 +17,7 @@ class YieldSupplyGetProtocolBalanceUseCase( userWalletId: UserWalletId, cryptoCurrency: CryptoCurrency, ): Either = Either.catch { - requireNotNull(cryptoCurrency as CryptoCurrency.Token) + requireNotNull(cryptoCurrency as? CryptoCurrency.Token) yieldSupplyTransactionRepository.getEffectiveProtocolBalance( userWalletId = userWalletId, diff --git a/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetRewardsBalanceUseCase.kt b/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetRewardsBalanceUseCase.kt index fb055caf3f..775081fd02 100644 --- a/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetRewardsBalanceUseCase.kt +++ b/domain/yield-supply/src/main/java/com/tangem/domain/yield/supply/usecase/YieldSupplyGetRewardsBalanceUseCase.kt @@ -1,8 +1,8 @@ package com.tangem.domain.yield.supply.usecase -import com.tangem.core.ui.format.bigdecimal.format import com.tangem.core.ui.format.bigdecimal.anyDecimals import com.tangem.core.ui.format.bigdecimal.fiat +import com.tangem.core.ui.format.bigdecimal.format import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.currency.CryptoCurrencyStatus @@ -23,10 +23,14 @@ class YieldSupplyGetRewardsBalanceUseCase( ) { operator fun invoke(status: CryptoCurrencyStatus, appCurrency: AppCurrency): Flow = flow { - val amount: BigDecimal? = status.value.amount?.let { amt -> - status.value.fiatRate?.let { rate -> amt.multiply(rate) } + val cryptoAmount = status.value.amount + val fiatRate = status.value.fiatRate + + val amount = if (cryptoAmount != null && fiatRate != null) { + cryptoAmount.multiply(fiatRate) + } else { + return@flow } - if (amount == null) return@flow val tokenAddress = (status.currency as? CryptoCurrency.Token)?.contractAddress ?: return@flow val apy = try { diff --git a/features/create-wallet-selection/impl/detekt-baseline-debug.xml b/features/create-wallet-selection/impl/detekt-baseline-debug.xml deleted file mode 100644 index 5cabd0af5c..0000000000 --- a/features/create-wallet-selection/impl/detekt-baseline-debug.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - BooleanPropertyNaming:CreateWalletSelectionUM.kt$CreateWalletSelectionUM$val showAlreadyHaveWallet: Boolean = false - MultilineLambdaItParameter:CreateWalletSelectionContent.kt${ Feature( feature = it, modifier = Modifier .padding(top = 12.dp), ) } - - diff --git a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt index f8eff897d9..bc586d7d95 100644 --- a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt +++ b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt @@ -75,7 +75,7 @@ internal class CreateWalletSelectionModel @Inject constructor( ), ), onBuyClick = ::onBuyClick, - showAlreadyHaveWallet = true, + shouldShowAlreadyHaveWallet = true, ), ) @@ -88,7 +88,7 @@ internal class CreateWalletSelectionModel @Inject constructor( private fun showAlreadyHaveWalletWithDelay() { modelScope.launch { delay(SHOW_ALREADY_HAVE_WALLET_DELAY) - uiState.update { it.copy(showAlreadyHaveWallet = true) } + uiState.update { it.copy(shouldShowAlreadyHaveWallet = true) } } } diff --git a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/entity/CreateWalletSelectionUM.kt b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/entity/CreateWalletSelectionUM.kt index 1d76d78bac..98cbe9a90b 100644 --- a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/entity/CreateWalletSelectionUM.kt +++ b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/entity/CreateWalletSelectionUM.kt @@ -6,7 +6,7 @@ import kotlinx.collections.immutable.ImmutableList internal data class CreateWalletSelectionUM( val isScanInProgress: Boolean = false, - val showAlreadyHaveWallet: Boolean = false, + val shouldShowAlreadyHaveWallet: Boolean = false, val blocks: ImmutableList, val onBackClick: () -> Unit, val onBuyClick: () -> Unit, diff --git a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/ui/CreateWalletSelectionContent.kt b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/ui/CreateWalletSelectionContent.kt index 1a953f008d..7fde4ee3ac 100644 --- a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/ui/CreateWalletSelectionContent.kt +++ b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/ui/CreateWalletSelectionContent.kt @@ -6,7 +6,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -104,7 +104,7 @@ internal fun CreateWalletSelectionContent(state: CreateWalletSelectionUM, modifi ) } } - AnimatedVisibility(state.showAlreadyHaveWallet) { + AnimatedVisibility(state.shouldShowAlreadyHaveWallet) { AlreadyHaveTangemWalletBlock( onBuyClick = state.onBuyClick, isScanInProgress = state.isScanInProgress, @@ -161,9 +161,9 @@ private fun WalletBlock( thickness = 0.5.dp, color = TangemTheme.colors.stroke.primary, ) - features.forEach { + features.forEach { feature -> Feature( - feature = it, + feature = feature, modifier = Modifier .padding(top = 12.dp), ) diff --git a/features/stories/impl/detekt-baseline-debug.xml b/features/stories/impl/detekt-baseline-debug.xml deleted file mode 100644 index 15299582b8..0000000000 --- a/features/stories/impl/detekt-baseline-debug.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PropertyUsedBeforeDeclaration:StoriesModel.kt$StoriesModel$_state - UseEmptyCounterpart:StoriesEvents.kt$StoriesEvents$mapOf() - - diff --git a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/analytics/StoriesEvents.kt b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/analytics/StoriesEvents.kt index 54644cf01f..962d4cd6c5 100644 --- a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/analytics/StoriesEvents.kt +++ b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/analytics/StoriesEvents.kt @@ -6,7 +6,7 @@ import com.tangem.core.analytics.models.AnalyticsParam.Key.WATCHED sealed class StoriesEvents( event: String, - params: Map = mapOf(), + params: Map = emptyMap(), ) : AnalyticsEvent("Stories", event, params) { data class SwapStories( diff --git a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/model/StoriesModel.kt b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/model/StoriesModel.kt index 1d3c2f06b6..700e81d255 100644 --- a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/model/StoriesModel.kt +++ b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/model/StoriesModel.kt @@ -27,12 +27,11 @@ internal class StoriesModel @Inject constructor( private val shouldShowStoriesUseCase: ShouldShowStoriesUseCase, private val analyticsEventHandler: AnalyticsEventHandler, ) : Model() { - val state: StateFlow get() = _state + + val state: StateFlow + field = MutableStateFlow(value = SwapStoriesUM.Empty) private val params = paramsContainer.require() - private val _state: MutableStateFlow = MutableStateFlow( - value = SwapStoriesUM.Empty, - ) init { initStories() @@ -59,7 +58,7 @@ internal class StoriesModel @Inject constructor( if (swapStory == null) { openScreen(hideStories = false) // Fallback to target screen } else { - _state.update { + state.update { SwapStoriesFactory.createStoriesState( swapStory = swapStory, onStoriesClose = { watchCount -> diff --git a/features/swap/domain/models/detekt-baseline-debug.xml b/features/swap/domain/models/detekt-baseline-debug.xml deleted file mode 100644 index 04b765b070..0000000000 --- a/features/swap/domain/models/detekt-baseline-debug.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - NamedArguments:TokensDataStateExpress.kt$TokensDataStateExpress.Companion$CurrenciesGroup(emptyList(), emptyList(), emptyList(), false) - NullableBooleanCheck:ExchangeStatus.kt$ExchangeStatusModel$createdAt?.isBefore(DateTime.now().minusMinutes(FIFTEEN_MINUTES)) ?: false - - diff --git a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt index 69300406c2..d066e86fe7 100644 --- a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt +++ b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt @@ -32,7 +32,7 @@ data class ExchangeStatusModel( val averageDuration: Int? = null, ) { val hasLongTime: Boolean - get() = createdAt?.isBefore(DateTime.now().minusMinutes(FIFTEEN_MINUTES)) ?: false + get() = createdAt?.isBefore(DateTime.now().minusMinutes(FIFTEEN_MINUTES)) == true private companion object { const val FIFTEEN_MINUTES = 15 diff --git a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt index f67c4a5801..f0587337d6 100644 --- a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt +++ b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt @@ -12,8 +12,18 @@ data class TokensDataStateExpress( ) { companion object { val EMPTY = TokensDataStateExpress( - fromGroup = CurrenciesGroup(emptyList(), emptyList(), emptyList(), false), - toGroup = CurrenciesGroup(emptyList(), emptyList(), emptyList(), false), + fromGroup = CurrenciesGroup( + available = emptyList(), + unavailable = emptyList(), + accountCurrencyList = emptyList(), + isAfterSearch = false, + ), + toGroup = CurrenciesGroup( + available = emptyList(), + unavailable = emptyList(), + accountCurrencyList = emptyList(), + isAfterSearch = false, + ), allProviders = emptyList(), ) }