@@ -50,6 +50,7 @@ import {
5050 buildEmailValidator,
5151 composeValidator,
5252 hasErrors,
53+ buildArrayValidator,
5354} from 'form/validators';
5455import { FORM_ERROR } from 'final-form';
5556import SubmitButton from 'form/SubmitButton';
@@ -98,8 +99,6 @@ const buildAccessoryFor = (dones, errors) => name => {
9899 return <AccessoryIcon.Pending />;
99100};
100101
101−const emailFormatValidator = buildEmailValidator();
102−
103102export default function InviteEmail() {
104103 const { contracts, web3, networkType } = useNetwork();
105104 const { wallet, walletType, walletHdPath } = useWallet();
@@ -135,14 +134,8 @@ export default function InviteEmail() {
135134 const isFailed = status === STATUS.FAILURE;
136135 const isDone = status === STATUS.SUCCESS;
137136
138− const validateEmail = useCallback(
137+ const validateHasReceived = useCallback(
139138 async email => {
140− // check individual email validity
141− const error = await emailFormatValidator(email);
142− if (error) {
143− return error;
144− }
145−
146139 const hasReceived = await getHasReceived(email);
147140 if (hasReceived) {
148141 return HAS_RECEIVED_TEXT;
@@ -151,11 +144,6 @@ export default function InviteEmail() {
151144 [getHasReceived]
152145 );
153146
154− const validateEmails = useCallback(
155− async emails => await Promise.all(emails.map(validateEmail)),
156− [validateEmail]
157− );
158−
159147 const validateForm = useCallback(async (values, errors) => {
160148 if (hasErrors(errors)) {
161149 return errors;
@@ -169,8 +157,16 @@ export default function InviteEmail() {
169157 }, []);
170158
171159 const validate = useMemo(
172− () => composeValidator({ emails: validateEmails }, validateForm),
173− [validateEmails, validateForm]
160+ () =>
161+ composeValidator(
162+ {
163+ emails: buildArrayValidator(
164+ buildEmailValidator([validateHasReceived])
165+ ),
166+ },
167+ validateForm
168+ ),
169+ [validateForm, validateHasReceived]
174170 );
175171
176172 // progress is [0, .length] of invites or receipts, as we're generating them