mirror of
https://github.com/status-im/safe-react.git
synced 2026-09-01 22:21:08 +00:00
Included routes, forms, validators, tests and in general everything for making possible create safes, save them, load them and visualize them.
42 lines
1.3 KiB
JavaScript
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)
|