From 5ca8a65d28bf7d369fe278e6c2b568dae3aa1820 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 21 Sep 2023 12:36:40 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../ui/appsettings/AppSettingsFragment.kt | 95 ++++++++++--------- .../ui/appsettings/AppSettingsViewModel.kt | 4 - .../tokens/legacy/redux/TokensMiddleware.kt | 41 ++++---- .../data/card/sdk/DefaultCardSdkProvider.kt | 2 +- gradle/dependencies.toml | 4 +- 5 files changed, 72 insertions(+), 74 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsFragment.kt index 0e0911e303..349a795f23 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsFragment.kt @@ -32,55 +32,56 @@ internal class AppSettingsFragment : ComposeFragment(), StoreSubscriber + state.skipRepeats { oldState, newState -> + oldState.detailsState == newState.detailsState + }.select { it.detailsState } } + } - @Composable - override fun ScreenContent(modifier: Modifier) { - AppSettingsScreen( - modifier = modifier, - state = viewModel.uiState, - onBackClick = { - store.dispatch(DetailsAction.ResetCardSettingsData) - store.dispatch(NavigationAction.PopBackTo()) - }, - ) - } + override fun onResume() { + super.onResume() + viewModel.refreshBiometricsStatus(lifecycleScope) + } - override fun TransitionInflater.inflateTransitions(): Boolean { - enterTransition = inflateTransition(R.transition.fade) - exitTransition = inflateTransition(R.transition.fade) + override fun onStop() { + super.onStop() + store.unsubscribe(this) + } - return true - } - - override fun onStart() { - super.onStart() - store.subscribe(this) { state -> - state.skipRepeats { oldState, newState -> - oldState.detailsState == newState.detailsState - }.select { it.detailsState } - } - } - - override fun onResume() { - super.onResume() - viewModel.refreshBiometricsStatus(lifecycleScope) - } - - override fun onStop() { - super.onStop() - store.unsubscribe(this) - } - - override fun newState(state: DetailsState) { - if (activity == null || view == null) return - viewModel.updateState(state) - } - } \ No newline at end of file + override fun newState(state: DetailsState) { + if (activity == null || view == null) return + viewModel.updateState(state) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsViewModel.kt b/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsViewModel.kt index c76eaafa65..aaaae0a8d1 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/AppSettingsViewModel.kt @@ -105,10 +105,6 @@ internal class AppSettingsViewModel( onCheckedChange = ::onFlipToHideBalanceToggled, ).let(::add) - itemsFactory.createSelectThemeModeButton(state.selectedThemeMode) { - showThemeModeSelector(state.selectedThemeMode) - }.let(::add) - if (state.darkThemeSwitchEnabled) { itemsFactory.createSelectThemeModeButton(state.selectedThemeMode) { showThemeModeSelector(state.selectedThemeMode) diff --git a/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt b/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt index 791e0f1547..79abcbe9f6 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt @@ -215,9 +215,9 @@ object TokensMiddleware { onSuccess: (ScanResponse) -> Unit, ) { val config = CardConfig.createConfig(scanResponse.card) - val derivationDataList = currencyList.mapNotNull { - config.primaryCurve(blockchain = Blockchain.fromId(it.network.id.value)) - ?.let { curve -> getNewDerivations(curve, scanResponse, currencyList) } + val derivationDataList = currencyList.mapNotNull { currency -> + config.primaryCurve(blockchain = Blockchain.fromId(currency.network.id.value)) + ?.let { curve -> getNewDerivations(curve, scanResponse, currency) } } val derivations = derivationDataList.associate(DerivationData::derivations) if (derivations.isEmpty()) { @@ -257,7 +257,11 @@ object TokensMiddleware { } } - private fun getLegacyDerivations(curve: EllipticCurve, scanResponse: ScanResponse, currency: Currency): DerivationData? { + private fun getLegacyDerivations( + curve: EllipticCurve, + scanResponse: ScanResponse, + currency: Currency, + ): DerivationData? { val wallet = scanResponse.card.wallets.firstOrNull { it.curve == curve } ?: return null val supportedCurves = currency.blockchain.getSupportedCurves() @@ -291,30 +295,27 @@ object TokensMiddleware { private fun getNewDerivations( curve: EllipticCurve, scanResponse: ScanResponse, - currencyList: List, + currency: CryptoCurrency, ): DerivationData? { val wallet = scanResponse.card.wallets.firstOrNull { it.curve == curve } ?: return null - val manageTokensCandidates = currencyList - .map { Blockchain.fromId(it.network.id.value) } - .distinct() - .filter { it.getSupportedCurves().contains(curve) } - .mapNotNull { it.derivationPath(scanResponse.derivationStyleProvider.getDerivationStyle()) } + val blockchain = Blockchain.fromId(currency.network.id.value) + val supportedCurves = blockchain.getSupportedCurves() + val path = blockchain.derivationPath(scanResponse.derivationStyleProvider.getDerivationStyle()) + .takeIf { supportedCurves.contains(curve) } - val customTokensCandidates = currencyList - .filter { Blockchain.fromId(it.network.id.value).getSupportedCurves().contains(curve) } - .mapNotNull { it.network.derivationPath.value } - .map(::DerivationPath) + val customPath = currency.network.derivationPath.value?.let { + DerivationPath(it) + }.takeIf { supportedCurves.contains(curve) } - val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct().toMutableList() + val bothCandidates = listOfNotNull(path, customPath).distinct().toMutableList() if (bothCandidates.isEmpty()) return null - currencyList.find { it is CryptoCurrency.Coin && Blockchain.fromId(it.network.id.value) == Blockchain.Cardano } - ?.let { currency -> - currency.network.derivationPath.value?.let { - bothCandidates.add(CardanoUtils.extendedDerivationPath(DerivationPath(it))) - } + if (currency is CryptoCurrency.Coin && blockchain == Blockchain.Cardano) { + currency.network.derivationPath.value?.let { + bothCandidates.add(CardanoUtils.extendedDerivationPath(DerivationPath(it))) } + } val mapKeyOfWalletPublicKey = wallet.publicKey.toMapKey() val alreadyDerivedKeys: ExtendedPublicKeysMap = diff --git a/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt b/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt index 9c17c4c127..1249de10d7 100644 --- a/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt +++ b/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt @@ -19,7 +19,7 @@ import javax.inject.Singleton internal class DefaultCardSdkProvider @Inject constructor() : CardSdkProvider, CardSdkLifecycleObserver { override val sdk: TangemSdk - get() = requireNotNull(value = _sdk?.get()) { "Impossible to get the TangemSdk when activity is destroyed" } + get() = requireNotNull(value = _sdk) { "Impossible to get the TangemSdk when activity is destroyed" } private var _sdk: TangemSdk? = null diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 7b54e17033..4c97997ed7 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -81,9 +81,9 @@ okHttp-prettyLogging = "3.1.0" # endregion Other libraries # region Tangem -tangemBlockchainSdk = "release-app_4.11-349" +tangemBlockchainSdk = "develop-350" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "release-app_4.11-295" +tangemCardSdk = "develop-297" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds # endregion Tangem