From 0b0088f613de0823cdfda5f42f5e800bfab66516 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 13 Apr 2022 10:24:25 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../java/com/tangem/domain/DomainException.kt | 13 ++++++ .../domain/common/form/FieldsValidators.kt | 9 +++- .../redux/AddCustomTokenAction.kt | 3 +- .../addCustomToken/redux/AddCustomTokenHub.kt | 41 +++++++++++++------ .../redux/AddCustomTokenState.kt | 7 ++-- 5 files changed, 54 insertions(+), 19 deletions(-) create mode 100644 domain/src/main/java/com/tangem/domain/DomainException.kt diff --git a/domain/src/main/java/com/tangem/domain/DomainException.kt b/domain/src/main/java/com/tangem/domain/DomainException.kt new file mode 100644 index 0000000000..4788eed8f8 --- /dev/null +++ b/domain/src/main/java/com/tangem/domain/DomainException.kt @@ -0,0 +1,13 @@ +package com.tangem.domain + +/** +[REDACTED_AUTHOR] + * Must be handled by the module or sent to Crashlytics + */ +interface DomainInternalException + +sealed class DomainException(message: String?) : Throwable(message), DomainInternalException { + data class SelectTokeNetworkException(val networkId: String) : DomainException( + "Unknown network [$networkId] should not be included in the network selection dialog." + ) +} \ No newline at end of file diff --git a/domain/src/main/java/com/tangem/domain/common/form/FieldsValidators.kt b/domain/src/main/java/com/tangem/domain/common/form/FieldsValidators.kt index ff2d9398e7..83ba44c309 100644 --- a/domain/src/main/java/com/tangem/domain/common/form/FieldsValidators.kt +++ b/domain/src/main/java/com/tangem/domain/common/form/FieldsValidators.kt @@ -34,7 +34,6 @@ class TokenContractAddressValidator : CustomTokenValidator() { AddCustomTokenError.InvalidContractAddress } } - } class TokenNetworkValidator : CustomTokenValidator() { @@ -44,6 +43,14 @@ class TokenNetworkValidator : CustomTokenValidator() { } } +class TokenNameValidator : CustomTokenValidator() { + override fun validate(data: String?): AddCustomTokenError? = StringIsNotEmptyValidator().validate(data) +} + +class TokenSymbolValidator : CustomTokenValidator() { + override fun validate(data: String?): AddCustomTokenError? = StringIsNotEmptyValidator().validate(data) +} + class TokenDecimalsValidator : CustomTokenValidator() { override fun validate(data: String?): AddCustomTokenError? { val decimal = data?.toIntOrNull() ?: return AddCustomTokenError.FieldIsEmpty diff --git a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenAction.kt b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenAction.kt index d4eda81f69..4b1a940dcf 100644 --- a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenAction.kt +++ b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenAction.kt @@ -16,9 +16,10 @@ sealed class AddCustomTokenAction : Action { // from user, ui object OnCreate : AddCustomTokenAction() object OnDestroy : AddCustomTokenAction() - data class OnTokenFieldChanged(val id: FieldId, val value: Field.Data) : AddCustomTokenAction() data class OnTokenContractAddressChanged(val value: Field.Data) : AddCustomTokenAction() data class OnTokenNetworkChanged(val value: Field.Data) : AddCustomTokenAction() + data class OnTokenNameChanged(val value: Field.Data) : AddCustomTokenAction() + data class OnTokenSymbolChanged(val value: Field.Data) : AddCustomTokenAction() data class OnTokenDerivationPathChanged(val value: Field.Data) : AddCustomTokenAction() data class OnTokenDecimalsChanged(val value: Field.Data) : AddCustomTokenAction() data class OnCustomTokenSelected(val any: Any = Unit) : AddCustomTokenAction() 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 62eef658b1..0077bd1907 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 @@ -3,7 +3,9 @@ package com.tangem.domain.features.addCustomToken.redux import android.webkit.ValueCallback import com.tangem.blockchain.common.Blockchain import com.tangem.common.card.Card +import com.tangem.common.services.Result import com.tangem.domain.DomainDialog +import com.tangem.domain.DomainException import com.tangem.domain.common.form.* import com.tangem.domain.features.addCustomToken.* import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.* @@ -73,21 +75,29 @@ internal class AddCustomTokenHub : BaseStoreHub("AddCustomT } } is OnTokenNetworkChanged -> { - val validator: TokenNetworkValidator = getValidator(Network, hubState) - addOrRemoveError(Network, validator.validate(action.value.value)) +// val validator: TokenNetworkValidator = getValidator(Network, hubState) +// addOrRemoveError(Network, validator.validate(action.value.value)) + +// dispatchOnMain(OnTokenContractAddressChanged(Field.Data( +// getField(ContractAddress, hubState).data.value, false +// ))) } - is OnTokenDerivationPathChanged -> { -// val validator: TokenDerivationPathValidator = getValidator(DerivationPath, hubState) -// addOrRemoveError(DerivationPath, validator.validate(action.value.value)) + is OnTokenNameChanged -> { + val validator: TokenNameValidator = getValidator(Name, hubState) + addOrRemoveError(Name, validator.validate(action.value.value)) + } + is OnTokenSymbolChanged -> { + val validator: TokenSymbolValidator = getValidator(Symbol, hubState) + addOrRemoveError(Symbol, validator.validate(action.value.value)) } is OnTokenDecimalsChanged -> { val validator: TokenDecimalsValidator = getValidator(Decimals, hubState) addOrRemoveError(Decimals, validator.validate(action.value.value)) } - is OnTokenFieldChanged -> { - val validator: StringIsNotEmptyValidator = getValidator(action.id, hubState) - addOrRemoveError(action.id as CustomTokenFieldId, validator.validate(action.value.value)) - } +// is OnTokenDerivationPathChanged -> { +// val validator: TokenDerivationPathValidator = getValidator(DerivationPath, hubState) +// addOrRemoveError(DerivationPath, validator.validate(action.value.value)) +// } is OnCustomTokenSelected -> { // dispatchOnMain() } @@ -231,8 +241,13 @@ internal class AddCustomTokenHub : BaseStoreHub("AddCustomT field.data = action.value updateFormState(state) } - is OnTokenDerivationPathChanged -> { - val field: TokenDerivationPathField = getField(DerivationPath, state) + is OnTokenNameChanged -> { + val field: TokenField = getField(Name, state) + field.data = action.value + updateFormState(state) + } + is OnTokenSymbolChanged -> { + val field: TokenField = getField(Symbol, state) field.data = action.value updateFormState(state) } @@ -241,8 +256,8 @@ internal class AddCustomTokenHub : BaseStoreHub("AddCustomT field.data = action.value updateFormState(state) } - is OnTokenFieldChanged -> { - val field: TokenField = getField(action.id, state) + is OnTokenDerivationPathChanged -> { + val field: TokenDerivationPathField = getField(DerivationPath, state) field.data = action.value updateFormState(state) } 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 d8ac3b84ee..cdf726e361 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 @@ -76,10 +76,9 @@ data class AddCustomTokenState( return mapOf( ContractAddress to TokenContractAddressValidator(), Network to TokenNetworkValidator(), - Name to StringIsNotEmptyValidator(), - Symbol to StringIsNotEmptyValidator(), + Name to TokenNameValidator(), + Symbol to TokenSymbolValidator(), Decimals to TokenDecimalsValidator(), -// DerivationPath to TokenDerivationPathValidator(), ) } @@ -99,7 +98,7 @@ data class AddCustomTokenState( val evmBlockchains = Blockchain.values().filter { !it.isTestnet() && it.getChainId() != null } - return evmBlockchains + return listOf(Blockchain.Unknown) + evmBlockchains } private fun createInitialScreenState(): ScreenState {