From b89206903dfd74d9cb2f0612d281065a9040e390 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 3 Oct 2022 11:29:48 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../addCustomToken/redux/AddCustomTokenHub.kt | 44 ++++++++++++++++--- .../redux/AddCustomTokenState.kt | 36 ++++++++++++--- 2 files changed, 67 insertions(+), 13 deletions(-) diff --git a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt index 1c09b4116a..dfc524e857 100644 --- a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt +++ b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt @@ -5,7 +5,9 @@ import com.tangem.blockchain.common.Blockchain import com.tangem.common.extensions.guard import com.tangem.common.services.Result import com.tangem.domain.AddCustomTokenError -import com.tangem.domain.AddCustomTokenError.Warning.* +import com.tangem.domain.AddCustomTokenError.Warning.PotentialScamToken +import com.tangem.domain.AddCustomTokenError.Warning.TokenAlreadyAdded +import com.tangem.domain.AddCustomTokenError.Warning.UnsupportedSolanaToken import com.tangem.domain.AddCustomTokenException import com.tangem.domain.DomainDialog import com.tangem.domain.DomainWrapped @@ -14,10 +16,40 @@ import com.tangem.domain.common.extensions.canHandleToken import com.tangem.domain.common.extensions.fromNetworkId import com.tangem.domain.common.extensions.supportedBlockchains import com.tangem.domain.common.extensions.toNetworkId -import com.tangem.domain.common.form.* -import com.tangem.domain.features.addCustomToken.* -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.* -import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.* +import com.tangem.domain.common.form.Field +import com.tangem.domain.common.form.Form +import com.tangem.domain.common.form.TokenContractAddressValidator +import com.tangem.domain.common.form.TokenDecimalsValidator +import com.tangem.domain.common.form.TokenNameValidator +import com.tangem.domain.common.form.TokenNetworkValidator +import com.tangem.domain.common.form.TokenSymbolValidator +import com.tangem.domain.features.addCustomToken.AddCustomTokenService +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.ContractAddress +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Decimals +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.DerivationPath +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Name +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Network +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Symbol +import com.tangem.domain.features.addCustomToken.TokenBlockchainField +import com.tangem.domain.features.addCustomToken.TokenDerivationPathField +import com.tangem.domain.features.addCustomToken.TokenField +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.FieldError +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.Init +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnAddCustomTokenClicked +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnCreate +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnDestroy +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnTokenContractAddressChanged +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnTokenDecimalsChanged +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnTokenDerivationPathChanged +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnTokenNameChanged +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnTokenNetworkChanged +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.OnTokenSymbolChanged +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.Screen +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.SetFoundTokenInfo +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.UpdateForm +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction.Warning +import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenState.Companion.createInitialScreenState import com.tangem.domain.redux.BaseStoreHub import com.tangem.domain.redux.DomainState import com.tangem.domain.redux.ReStoreReducer @@ -569,12 +601,12 @@ private class AddCustomTokenReducer( tangemTechService = globalState.networkServices.tangemTechService, supportedTokenNetworkIds = supportedTokenNetworkIds ) - val form = Form(AddCustomTokenState.createFormFields(card, CustomTokenType.Blockchain)) state.copy( cardDerivationStyle = card.derivationStyle, form = form, tangemTechServiceManager = tangemTechServiceManager, + screenState = createInitialScreenState(card.settings.isHDWalletAllowed), ) } is OnDestroy -> { diff --git a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenState.kt b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenState.kt index 97c652da19..2ecd595e8e 100644 --- a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenState.kt +++ b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenState.kt @@ -9,9 +9,31 @@ import com.tangem.domain.DomainWrapped import com.tangem.domain.common.TapWorkarounds.isTestCard import com.tangem.domain.common.extensions.supportedBlockchains import com.tangem.domain.common.extensions.supportedTokens -import com.tangem.domain.common.form.* -import com.tangem.domain.features.addCustomToken.* -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.* +import com.tangem.domain.common.form.CustomTokenValidator +import com.tangem.domain.common.form.DataField +import com.tangem.domain.common.form.FieldDataConverter +import com.tangem.domain.common.form.FieldId +import com.tangem.domain.common.form.FieldToJsonConverter +import com.tangem.domain.common.form.Form +import com.tangem.domain.common.form.StringIsEmptyValidator +import com.tangem.domain.common.form.StringIsNotEmptyValidator +import com.tangem.domain.common.form.TokenContractAddressValidator +import com.tangem.domain.common.form.TokenDecimalsValidator +import com.tangem.domain.common.form.TokenNameValidator +import com.tangem.domain.common.form.TokenNetworkValidator +import com.tangem.domain.common.form.TokenSymbolValidator +import com.tangem.domain.features.addCustomToken.AddCustomTokenService +import com.tangem.domain.features.addCustomToken.CustomCurrency +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.ContractAddress +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Decimals +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.DerivationPath +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Name +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Network +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Symbol +import com.tangem.domain.features.addCustomToken.TokenBlockchainField +import com.tangem.domain.features.addCustomToken.TokenDerivationPathField +import com.tangem.domain.features.addCustomToken.TokenField import com.tangem.domain.redux.DomainState import com.tangem.domain.redux.state.StringActionStateConverter import com.tangem.network.api.tangemTech.CoinsResponse @@ -119,7 +141,7 @@ data class AddCustomTokenState( formErrors = emptyMap(), foundToken = null, warnings = emptySet(), - screenState = createInitialScreenState(), + screenState = createInitialScreenState(card.settings.isHDWalletAllowed), tangemTechServiceManager = null, ) } @@ -223,15 +245,15 @@ data class AddCustomTokenState( return (listOf(Blockchain.Unknown) + evmBlockchains).sortByName() } - private fun createInitialScreenState(): ScreenState { + internal fun createInitialScreenState(showDerivationPathField: Boolean = false): ScreenState { return ScreenState( contractAddressField = ViewStates.TokenField(), network = ViewStates.TokenField(), name = ViewStates.TokenField(isEnabled = false), symbol = ViewStates.TokenField(isEnabled = false), decimals = ViewStates.TokenField(isEnabled = false), - derivationPath = ViewStates.TokenField(), - addButton = ViewStates.AddButton(isEnabled = false) + derivationPath = ViewStates.TokenField(isVisible = showDerivationPathField), + addButton = ViewStates.AddButton(isEnabled = false), ) } }