@@ -187,6 +187,27 @@ export default function InviteEmail() {
187 throw new Error('Internal Error: Missing Contracts/Web3/Wallet');
187 throw new Error('Internal Error: Missing Contracts/Web3/Wallet');
190+ //TODO want to do this on-input, but that gets weird. see #188
192+ const mailsVerified = inputs.map(async input => {
193+ console.log('aaa', invites);
194+ const email = input.data;
195+ const hasReceived = getHasReceived(email).matchWith({
196+ Nothing: () => false, // loading
202+ [input.name]: `${email} has already received an invite.`,
206+ await Promise.all(mailsVerified);
207+ if (errorCount > 0) {
208+ throw new Error(`Some of these already have a point!`);
190 const nonce = await _web3.eth.getTransactionCount(_wallet.address);
211 const nonce = await _web3.eth.getTransactionCount(_wallet.address);
191 const chainId = await _web3.eth.net.getId();
212 const chainId = await _web3.eth.net.getId();
192 const planets = await azimuth.delegatedSending.getPlanetsToSend(
213 const planets = await azimuth.delegatedSending.getPlanetsToSend(
@@ -207,7 +228,6 @@ export default function InviteEmail() {
211 clearInvites();
231 clearInvites();
212 // NB(shrugs) - must be processed in serial because main thread, etc
232 // NB(shrugs) - must be processed in serial because main thread, etc
213 for (let i = 0; i < inputs.length; i++) {
233 for (let i = 0; i < inputs.length; i++) {