2020-07-06 20:09:03 +00:00
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
import 'package:cake_wallet/generated/i18n.dart';
|
|
|
|
import 'package:cake_wallet/core/validator.dart';
|
2021-12-24 12:37:24 +00:00
|
|
|
import 'package:cw_core/crypto_currency.dart';
|
2020-07-06 20:09:03 +00:00
|
|
|
|
|
|
|
class AddressValidator extends TextValidator {
|
|
|
|
AddressValidator({@required CryptoCurrency type})
|
|
|
|
: super(
|
|
|
|
errorMessage: S.current.error_text_address,
|
|
|
|
pattern: getPattern(type),
|
|
|
|
length: getLength(type));
|
|
|
|
|
|
|
|
static String getPattern(CryptoCurrency type) {
|
|
|
|
switch (type) {
|
|
|
|
case CryptoCurrency.xmr:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.ada:
|
2021-02-23 18:38:36 +00:00
|
|
|
return '^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{104}\$'
|
|
|
|
'|^[0-9a-zA-Z]{105}\$|^addr1[0-9a-zA-Z]{98}\$';
|
2020-07-06 20:09:03 +00:00
|
|
|
case CryptoCurrency.bch:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.bnb:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.btc:
|
2021-03-26 12:45:46 +00:00
|
|
|
return '^1[0-9a-zA-Z]{32}\$|^1[0-9a-zA-Z]{33}\$|^3[0-9a-zA-Z]{32}\$'
|
|
|
|
'|^3[0-9a-zA-Z]{33}\$|^bc1[0-9a-zA-Z]{39}\$|^bc1[0-9a-zA-Z]{59}\$';
|
2020-09-24 18:58:07 +00:00
|
|
|
case CryptoCurrency.dai:
|
|
|
|
return '[0-9a-zA-Z]';
|
2020-07-06 20:09:03 +00:00
|
|
|
case CryptoCurrency.dash:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.eos:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.eth:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.ltc:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.nano:
|
|
|
|
return '[0-9a-zA-Z_]';
|
|
|
|
case CryptoCurrency.trx:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.usdt:
|
|
|
|
return '[0-9a-zA-Z]';
|
2020-09-25 13:30:39 +00:00
|
|
|
case CryptoCurrency.usdterc20:
|
|
|
|
return '[0-9a-zA-Z]';
|
2020-07-06 20:09:03 +00:00
|
|
|
case CryptoCurrency.xlm:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
case CryptoCurrency.xrp:
|
2021-01-13 17:26:02 +00:00
|
|
|
return '^[0-9a-zA-Z]{34}\$|^X[0-9a-zA-Z]{46}\$';
|
2020-07-06 20:09:03 +00:00
|
|
|
default:
|
|
|
|
return '[0-9a-zA-Z]';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static List<int> getLength(CryptoCurrency type) {
|
|
|
|
switch (type) {
|
|
|
|
case CryptoCurrency.xmr:
|
|
|
|
return [95, 106];
|
|
|
|
case CryptoCurrency.ada:
|
2021-02-23 18:38:36 +00:00
|
|
|
return null;
|
2020-07-06 20:09:03 +00:00
|
|
|
case CryptoCurrency.bch:
|
|
|
|
return [42];
|
|
|
|
case CryptoCurrency.bnb:
|
|
|
|
return [42];
|
|
|
|
case CryptoCurrency.btc:
|
2021-03-26 12:45:46 +00:00
|
|
|
return null;
|
2020-09-24 18:58:07 +00:00
|
|
|
case CryptoCurrency.dai:
|
|
|
|
return [42];
|
2020-07-06 20:09:03 +00:00
|
|
|
case CryptoCurrency.dash:
|
|
|
|
return [34];
|
|
|
|
case CryptoCurrency.eos:
|
|
|
|
return [42];
|
|
|
|
case CryptoCurrency.eth:
|
|
|
|
return [42];
|
|
|
|
case CryptoCurrency.ltc:
|
2021-05-07 07:36:38 +00:00
|
|
|
return [34, 43];
|
2020-07-06 20:09:03 +00:00
|
|
|
case CryptoCurrency.nano:
|
|
|
|
return [64, 65];
|
|
|
|
case CryptoCurrency.trx:
|
|
|
|
return [34];
|
|
|
|
case CryptoCurrency.usdt:
|
2022-02-08 08:57:02 +00:00
|
|
|
return [34];
|
2020-09-25 13:30:39 +00:00
|
|
|
case CryptoCurrency.usdterc20:
|
|
|
|
return [42];
|
2020-07-06 20:09:03 +00:00
|
|
|
case CryptoCurrency.xlm:
|
|
|
|
return [56];
|
|
|
|
case CryptoCurrency.xrp:
|
2021-01-13 17:26:02 +00:00
|
|
|
return null;
|
2020-07-06 20:09:03 +00:00
|
|
|
default:
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|