hc-awesome-validation
Version:
Validation module for redux-form based on react-intl messages.
32 lines (24 loc) • 1.1 kB
JavaScript
import R from 'ramda';
import { checkSingle, checkMultiple } from './common';
import errorMessages from './errorMessages';
const checkOfficialAddress = (addresses) => (value) => {
return !addresses.some((subString) => value.toLowerCase().includes(subString));
};
const hasForbiddenChars = (value) => {
const forbiddenCharacters = [ '[at]', '(at)', '@' ];
return !forbiddenCharacters.some((subString) => value.toLowerCase().includes(subString));
};
const checkForAbsoluteUrl = (value) => {
if (!value) {
return true;
}
return R.or(value.startsWith('http://'), value.startsWith('https://'));
};
export const isOfficialAddress = (addresses) => checkSingle(checkOfficialAddress(addresses), errorMessages.unofficialWebsite);
export const isValidAddress = checkSingle(hasForbiddenChars, errorMessages.notValidWebsite);
export const isAbsoluteUrl = checkSingle(checkForAbsoluteUrl, errorMessages.notAbsoluteUrl);
export const websiteSchema = (forbiddenAddresses) => checkMultiple([
isOfficialAddress(forbiddenAddresses)(),
isValidAddress(),
isAbsoluteUrl()
]);