mirror of
https://github.com/trezor/trezor-wallet
synced 2024-11-28 03:08:30 +00:00
fixed address validation
added checksum validation if address contains any uppercase letter
This commit is contained in:
parent
c9b9359e70
commit
93b70c1f0a
@ -13,6 +13,7 @@ import { initialState } from 'reducers/SendFormReducer';
|
||||
import { findToken } from 'reducers/TokensReducer';
|
||||
import { findDevice, getPendingAmount, getPendingNonce } from 'reducers/utils';
|
||||
import * as stateUtils from 'reducers/utils';
|
||||
import { validateAddress } from 'utils/ethUtils';
|
||||
|
||||
import type {
|
||||
Dispatch,
|
||||
@ -345,32 +346,19 @@ export const validation = (props: Props): void => {
|
||||
if (state.untouched) return;
|
||||
// valid address
|
||||
if (state.touched.address) {
|
||||
/* if (state.address.length < 1) {
|
||||
errors.address = 'Address is not set';
|
||||
} else if (!EthereumjsUtil.isValidAddress(state.address)) {
|
||||
errors.address = 'Address is not valid';
|
||||
} else {
|
||||
// address warning or info are set in addressValidation ThunkAction
|
||||
// do not override this
|
||||
if (state.warnings.address) {
|
||||
warnings.address = state.warnings.address;
|
||||
} else if (state.infos.address) {
|
||||
infos.address = state.infos.address;
|
||||
}
|
||||
} */
|
||||
const addressError = validateAddress(state.address);
|
||||
if (addressError) {
|
||||
errors.address = addressError;
|
||||
}
|
||||
|
||||
/* eslint (no-lonely-if) */
|
||||
if (state.address.length < 1) {
|
||||
errors.address = 'Address is not set';
|
||||
} else if (!EthereumjsUtil.isValidAddress(state.address)) {
|
||||
errors.address = 'Address is not valid';
|
||||
} else if (state.warnings.address) {
|
||||
// address warning or info are set in addressValidation ThunkAction
|
||||
// do not override this
|
||||
// address warning or info may be set in addressValidation ThunkAction
|
||||
// do not override them
|
||||
if (state.warnings.address) {
|
||||
warnings.address = state.warnings.address;
|
||||
if (state.infos.address) {
|
||||
infos.address = state.infos.address;
|
||||
}
|
||||
}
|
||||
|
||||
if (state.infos.address) {
|
||||
infos.address = state.infos.address;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* @flow */
|
||||
|
||||
import BigNumber from 'bignumber.js';
|
||||
import EthereumjsUtil from 'ethereumjs-util';
|
||||
|
||||
export const decimalToHex = (dec: number): string => new BigNumber(dec).toString(16);
|
||||
|
||||
@ -28,4 +29,16 @@ export const strip = (str: string): string => {
|
||||
return padLeftEven(str);
|
||||
};
|
||||
|
||||
export const calcGasPrice = (price: BigNumber, limit: string): string => price.times(limit).toString();
|
||||
export const calcGasPrice = (price: BigNumber, limit: string): string => price.times(limit).toString();
|
||||
|
||||
export const validateAddress = (address: string): ?string => {
|
||||
const hasUpperCase = new RegExp('^(.*[A-Z].*)$');
|
||||
if (address.length < 1) {
|
||||
return 'Address is not set';
|
||||
} else if (!EthereumjsUtil.isValidAddress(address)) {
|
||||
return 'Address is not valid';
|
||||
} else if (address.match(hasUpperCase) && !EthereumjsUtil.isValidChecksumAddress(address)) {
|
||||
return 'Address is not a valid checksum';
|
||||
}
|
||||
return null;
|
||||
}
|
Loading…
Reference in New Issue
Block a user