Updated on 2026-08-14
This commit is contained in:
parent
4690bf2e6c
commit
3718b9e42f
12 changed files with 876 additions and 42 deletions
|
|
@ -13,7 +13,7 @@ interface DataConverterVisitor<Data, Result> {
|
|||
interface FieldDataConverter<Result> : DataConverterVisitor<FieldData, Result>
|
||||
|
||||
abstract class BaseFieldDataConverter<Result> : FieldDataConverter<Result> {
|
||||
protected val collectIds: List<FieldId>
|
||||
private val collectIds: List<FieldId>
|
||||
get() = getIdToCollect()
|
||||
|
||||
protected val collectedData: MutableMap<FieldId, Any?> = mutableMapOf()
|
||||
|
|
@ -31,7 +31,7 @@ abstract class BaseFieldDataConverter<Result> : FieldDataConverter<Result> {
|
|||
|
||||
class FieldToJsonConverter(
|
||||
private val fieldsToConvert: List<FieldId> = listOf(),
|
||||
protected val jsonConverter: MoshiJsonConverter,
|
||||
private val jsonConverter: MoshiJsonConverter,
|
||||
) : BaseFieldDataConverter<String>() {
|
||||
|
||||
override fun getConvertedData(): String = jsonConverter.toJson(collectedData, " ")
|
||||
|
|
|
|||
|
|
@ -16,16 +16,14 @@ import timber.log.Timber
|
|||
interface CustomTokenValidator<T> : Validator<T, AddCustomTokenError>
|
||||
|
||||
class StringIsEmptyValidator : CustomTokenValidator<String> {
|
||||
override fun validate(data: String?): AddCustomTokenError? = when {
|
||||
data == null || data.isEmpty() -> null
|
||||
else -> AddCustomTokenError.FieldIsNotEmpty
|
||||
override fun validate(data: String?): AddCustomTokenError? {
|
||||
return if (data.isNullOrEmpty()) null else AddCustomTokenError.FieldIsNotEmpty
|
||||
}
|
||||
}
|
||||
|
||||
class StringIsNotEmptyValidator : CustomTokenValidator<String> {
|
||||
override fun validate(data: String?): AddCustomTokenError? = when {
|
||||
data == null || data.isEmpty() -> AddCustomTokenError.FieldIsEmpty
|
||||
else -> null
|
||||
override fun validate(data: String?): AddCustomTokenError? {
|
||||
return if (data.isNullOrEmpty()) AddCustomTokenError.FieldIsEmpty else null
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -46,12 +44,10 @@ class TokenContractAddressValidator : CustomTokenValidator<String> {
|
|||
}
|
||||
|
||||
override fun validate(data: String?): AddCustomTokenError? {
|
||||
if (data == null || data.isEmpty()) return AddCustomTokenError.FieldIsEmpty
|
||||
|
||||
return if (getAddressService().validate(data)) {
|
||||
null
|
||||
} else {
|
||||
AddCustomTokenError.InvalidContractAddress
|
||||
return when {
|
||||
data.isNullOrEmpty() -> AddCustomTokenError.FieldIsEmpty
|
||||
getAddressService().validate(data) -> null
|
||||
else -> AddCustomTokenError.InvalidContractAddress
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -74,9 +70,11 @@ class TokenContractAddressValidator : CustomTokenValidator<String> {
|
|||
}
|
||||
|
||||
class TokenNetworkValidator : CustomTokenValidator<Blockchain> {
|
||||
override fun validate(data: Blockchain?): AddCustomTokenError? = when (data) {
|
||||
null, Blockchain.Unknown -> AddCustomTokenError.NetworkIsNotSelected
|
||||
else -> null
|
||||
override fun validate(data: Blockchain?): AddCustomTokenError? {
|
||||
return when (data) {
|
||||
null, Blockchain.Unknown -> AddCustomTokenError.NetworkIsNotSelected
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -88,14 +86,14 @@ class TokenSymbolValidator : CustomTokenValidator<String> {
|
|||
override fun validate(data: String?): AddCustomTokenError? = StringIsNotEmptyValidator().validate(data)
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
class TokenDecimalsValidator : CustomTokenValidator<String> {
|
||||
override fun validate(data: String?): AddCustomTokenError? {
|
||||
val decimal = data?.toIntOrNull() ?: return AddCustomTokenError.FieldIsEmpty
|
||||
|
||||
return when {
|
||||
decimal > 30 -> AddCustomTokenError.InvalidDecimalsCount
|
||||
else -> null
|
||||
}
|
||||
return if (decimal > INVALID_DECIMALS_COUNT) AddCustomTokenError.InvalidDecimalsCount else null
|
||||
}
|
||||
|
||||
private companion object {
|
||||
const val INVALID_DECIMALS_COUNT = 30
|
||||
}
|
||||
}
|
||||
|
|
@ -125,7 +125,7 @@ internal class AddCustomTokenHub : BaseStoreHub<AddCustomTokenState>("AddCustomT
|
|||
}
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -532,21 +532,24 @@ internal class AddCustomTokenHub : BaseStoreHub<AddCustomTokenState>("AddCustomT
|
|||
}
|
||||
|
||||
private fun CustomTokenFieldId.validateValue(value: Any): AddCustomTokenError? {
|
||||
val state = hubState
|
||||
val contractAddressValidator: TokenContractAddressValidator = state.getValidator(ContractAddress)
|
||||
val nameValidator: TokenNameValidator = state.getValidator(Name)
|
||||
val symbolValidator: TokenSymbolValidator = state.getValidator(Symbol)
|
||||
val decimalsValidator: TokenDecimalsValidator = state.getValidator(Decimals)
|
||||
val networkValidator: TokenNetworkValidator = state.getValidator(Network)
|
||||
return when (this) {
|
||||
ContractAddress -> {
|
||||
val contractAddressValidator: TokenContractAddressValidator = hubState.getValidator(ContractAddress)
|
||||
contractAddressValidator.nextValidationFor(Network.getFieldValue())
|
||||
contractAddressValidator.validate(value as String)
|
||||
}
|
||||
Network, DerivationPath -> networkValidator.validate(value as Blockchain)
|
||||
Name -> nameValidator.validate(value as String)
|
||||
Symbol -> symbolValidator.validate(value as String)
|
||||
Decimals -> decimalsValidator.validate(value as String)
|
||||
Network, DerivationPath -> {
|
||||
hubState.getValidator<TokenNetworkValidator>(Network).validate(value as Blockchain)
|
||||
}
|
||||
Name -> {
|
||||
hubState.getValidator<TokenNameValidator>(Name).validate(value as String)
|
||||
}
|
||||
Symbol -> {
|
||||
hubState.getValidator<TokenSymbolValidator>(Symbol).validate(value as String)
|
||||
}
|
||||
Decimals -> {
|
||||
hubState.getValidator<TokenDecimalsValidator>(Decimals).validate(value as String)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -159,10 +159,6 @@ data class AddCustomTokenState(
|
|||
.getConvertedData()
|
||||
}
|
||||
|
||||
fun getNetworks(card: CardDTO, type: CustomTokenType): List<Blockchain> {
|
||||
return getNetworksList(card, type)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue