@@ -100,7 +100,6 @@ const useInviter = () => {
101 // NB(shrugs) - must be processed in serial because main thread, etc
101 // NB(shrugs) - must be processed in serial because main thread, etc
102 let signedInvites = [];
102 let signedInvites = [];
104 for (let i = 0; i < numInvites; i++) {
103 for (let i = 0; i < numInvites; i++) {
105 setProgress(x => x + 1);
104 setProgress(x => x + 1);
@@ -159,7 +158,7 @@ const useInviter = () => {
159 () => setNeedFunds(undefined)
158 () => setNeedFunds(undefined)
162− let unsentInvites = [];
161+ let inviteErrors = [];
163 let confirmedInvites = [];
162 let confirmedInvites = [];
164 const txAndMailings = signedInvites.map(async invite => {
163 const txAndMailings = signedInvites.map(async invite => {
@@ -172,8 +171,12 @@ const useInviter = () => {
172 await waitForTransactionConfirm(_web3, txHash);
171 await waitForTransactionConfirm(_web3, txHash);
173 confirmedInvites.push(invite);
172 confirmedInvites.push(invite);
174 } catch (error) {
173 } catch (error) {
175− console.error(error);
174+ console.error('Error sending invite tx:', error);
176− unsentInvites.push(invite);
175+ if (typeof error === 'string') {
176+ inviteErrors.push(error);
177+ } else if (typeof error === 'object' && error.message) {
178+ inviteErrors.push(error.message);
@@ -183,24 +186,14 @@ const useInviter = () => {
183 setTxStatus(STATUS.SUCCESS);
186 setTxStatus(STATUS.SUCCESS);
184 setInvites(confirmedInvites);
187 setInvites(confirmedInvites);
186− if (unsentInvites.length > 0) {
189+ if (inviteErrors.length > 0) {
187− return { errors: { [FORM_ERROR]: unsentInvites } };
190− if (errorCount > 0) {
192 errors: {
191 errors: {
193− [WARNING]: `There ${pluralize(
192+ [FORM_ERROR]: ['Error sending invites: ', ...inviteErrors],
200− )} while generating wallets. You can still send the invites that generated correctly.`,
204 return { invites: confirmedInvites };
197 return { invites: confirmedInvites };