on master help sign in
Merge pull request #506 from urbit/m/various
73fcf3aFang
package-lock.json+10
@@ -1815,6 +1815,16 @@
1815 "loader-utils": "^1.1.0"
1815 "loader-utils": "^1.1.0"
1816 }
1816 }
1817 },
1817 },
1818+ "@tlon/sigil-js": {
1819+ "version": "1.4.1",
1820+ "resolved": "https://registry.npmjs.org/@tlon/sigil-js/-/sigil-js-1.4.1.tgz",
1821+ "integrity": "sha512-+ajy1lqChGzpFzYE03IhSBmn+IugcgjSVhMurWN6CUb50Wc4z7epPpNk2xFvyfY5BilQlgtxDvMpIcNS54Iw2Q==",
1822+ "requires": {
1823+ "invariant": "^2.2.4",
1824+ "svgson": "^4.0.0",
1825+ "transformation-matrix": "2.1.1"
1826+ }
1827+ },
1818 "@types/babel__core": {
1828 "@types/babel__core": {
1819 "version": "7.1.9",
1829 "version": "7.1.9",
1820 "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz",
1830 "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz",
package.json+1−1
@@ -18,6 +18,7 @@
18 "@hot-loader/react-dom": "^16.8.6",
18 "@hot-loader/react-dom": "^16.8.6",
19 "@ledgerhq/hw-app-eth": "^5.5.0",
19 "@ledgerhq/hw-app-eth": "^5.5.0",
20 "@ledgerhq/hw-transport-u2f": "^5.5.0",
20 "@ledgerhq/hw-transport-u2f": "^5.5.0",
21+ "@tlon/sigil-js": "^1.4.1",
21 "@welldone-software/why-did-you-render": "^3.2.3",
22 "@welldone-software/why-did-you-render": "^3.2.3",
22 "async-retry": "^1.2.3",
23 "async-retry": "^1.2.3",
23 "azimuth-js": "^0.19.0",
24 "azimuth-js": "^0.19.0",
@@ -54,7 +55,6 @@
54 "urbit-key-generation": "^0.17.4",
55 "urbit-key-generation": "^0.17.4",
55 "urbit-ob": "^4.1.4",
56 "urbit-ob": "^4.1.4",
56 "urbit-paper-renderer": "^2.0.9",
57 "urbit-paper-renderer": "^2.0.9",
57− "urbit-sigil-js": "^1.3.5",
58 "web3": "1.0.0-beta.54",
58 "web3": "1.0.0-beta.54",
59 "web3-utils": "^1.0.0-beta.52"
59 "web3-utils": "^1.0.0-beta.52"
60 },
60 },
src/components/Sigil.js+2−2
@@ -1,4 +1,4 @@
1−import { sigil, reactRenderer } from 'urbit-sigil-js';
1+import { sigil, reactRenderer } from '@tlon/sigil-js';
2
2
3export default function Sigil({ patp, size, colors, ...rest }) {
3export default function Sigil({ patp, size, colors, ...rest }) {
4 return sigil({
4 return sigil({
@@ -6,7 +6,7 @@ export default function Sigil({ patp, size, colors, ...rest }) {
6 renderer: reactRenderer,
6 renderer: reactRenderer,
7 style: { width: '100%', height: '100%' }, // NOTE: scale to container
7 style: { width: '100%', height: '100%' }, // NOTE: scale to container
8 size,
8 size,
9− margin: size / 8,
9+ margin: true,
10 colors,
10 colors,
11 ...rest,
11 ...rest,
12 });
12 });
src/lib/useInviter.js+10−17
@@ -100,7 +100,6 @@ const useInviter = () => {
100
100
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 = [];
103− let errorCount = 0;
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);
106 try {
105 try {
@@ -159,7 +158,7 @@ const useInviter = () => {
159 () => setNeedFunds(undefined)
158 () => setNeedFunds(undefined)
160 );
159 );
161
160
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 => {
165 try {
164 try {
@@ -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);
179+ }
177 return;
180 return;
178 }
181 }
179 });
182 });
@@ -183,24 +186,14 @@ const useInviter = () => {
183 setTxStatus(STATUS.SUCCESS);
186 setTxStatus(STATUS.SUCCESS);
184 setInvites(confirmedInvites);
187 setInvites(confirmedInvites);
185
188
186− if (unsentInvites.length > 0) {
189+ if (inviteErrors.length > 0) {
187− return { errors: { [FORM_ERROR]: unsentInvites } };
188− }
189−
190− if (errorCount > 0) {
191 return {
190 return {
192 errors: {
191 errors: {
193− [WARNING]: `There ${pluralize(
192+ [FORM_ERROR]: ['Error sending invites: ', ...inviteErrors],
194− errorCount,
195− 'was',
196− 'were'
197− )} ${pluralize(
198− errorCount,
199− 'error'
200− )} while generating wallets. You can still send the invites that generated correctly.`,
201 },
193 },
202 };
194 };
203 }
195 }
196+
204 return { invites: confirmedInvites };
197 return { invites: confirmedInvites };
205 },
198 },
206 [
199 [