Files
safe-react/src/components/forms/validator.js
T
Adolfo Panizo 0cf8fae871 WA-278 - Feature Create Safe
Included routes, forms, validators, tests and in general everything for making possible create safes, save them, load them and visualize them.
2018-04-13 15:18:11 +02:00

42 lines
1.3 KiB
JavaScript

// @flow
import { getWeb3 } from '~/wallets/getWeb3'
type Field = boolean | string
export const required = (value: Field) => (value ? undefined : 'Required')
export const mustBeNumber = (value: number) =>
(Number.isNaN(Number(value)) ? 'Must be a number' : undefined)
export const minValue = (min: number) => (value: string) => {
if (Number.isNaN(Number(value)) || Number.parseInt(value, 10) >= Number(min)) {
return undefined
}
return `Should be at least ${min}`
}
export const maxValue = (max: number) => (value: string) => {
if (Number.isNaN(Number(value)) || Number.parseInt(value, 10) <= Number(max)) {
return undefined
}
return `Maximum value is ${max}`
}
export const ok = () => undefined
export const mustBeEthereumAddress = (address: Field) => {
const isAddress: boolean = getWeb3().isAddress(address)
return isAddress ? undefined : 'Address should be a valid Ethereum address'
}
export const ADDRESS_REPEATED_ERROR = 'Address already introduced'
export const uniqueAddress = (addresses: string[]) => (value: string) =>
(addresses.includes(value) ? ADDRESS_REPEATED_ERROR : undefined)
export const composeValidators = (...validators: Function[]) => (value: Field) =>
validators.reduce((error, validator) => error || validator(value), undefined)