on master help sign in
integrates PaperRenderer
commitf14f06a08036fccd4020060e17a3b8ad84f11e32 authorGavin Atkinson <gvnatknsn@protonmail.com> dateFri 6 Sep 2019, 10:46 (7 years ago) parent82ad0d7
22 files changed+77−99
package-lock.json+30−48 package.json+3−4 src/components/Greeting.js+1−1 src/components/MaybeSigil.js+1−1 src/components/PaperBuilder.js+6−4 src/components/Passport.js+1−1 src/lib/invite.js+16−23 src/lib/lib.js+1−1 src/lib/patp2dec.js+1−1 src/lib/useCurrentPointName.js+1−1 src/lib/useImpliedPoint.js+1−1 src/lib/useImpliedTicket.js+1−1 src/lib/useKeyfileGenerator.js+1−1 src/lib/validators.js+1−1 src/lib/wallet.js+1−1 src/lib/walletgen.js+2−2 src/views/Activate/PassportDownload.js+4−2 src/views/Admin/AdminRedownload.js+1−1 src/views/Admin/Reticket/ReticketConfirm.js+1−1 src/views/Invite/InviteEmail.js+1−1 src/views/IssueChild.js+1−1 src/views/Login/Ticket.js+1−1
package-lock.json+30−48
@@ -2167,37 +2167,6 @@
21672167 "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==",
21682168 "dev": true
21692169 },
2170− "PaperRenderer": {
2171− "version": "github:urbit/PaperRenderer#4a5dd07e3ff2d225d6a955ef6a2ed822c7369422",
2172− "from": "github:urbit/PaperRenderer#rc-2.0",
2173− "requires": {
2174− "lodash.get": "^4.4.2",
2175− "prop-types": "^15.7.2",
2176− "urbit-sigil-js": "^1.3.7"
2177− },
2178− "dependencies": {
2179− "prop-types": {
2180− "version": "15.7.2",
2181− "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
2182− "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
2183− "requires": {
2184− "loose-envify": "^1.4.0",
2185− "object-assign": "^4.1.1",
2186− "react-is": "^16.8.1"
2187− }
2188− },
2189− "urbit-sigil-js": {
2190− "version": "1.3.7",
2191− "resolved": "https://registry.npmjs.org/urbit-sigil-js/-/urbit-sigil-js-1.3.7.tgz",
2192− "integrity": "sha512-s/4sBpzSRX22r39FvNkpaMkt3xI6FJBj79Dp7FtYGR90es4ZLWNY3eA8QVrjHL+pcj4RyX56O62mXrRQ83ZsoQ==",
2193− "requires": {
2194− "react": "^16.8.6",
2195− "svgson": "^4.0.0",
2196− "transformation-matrix": "^1.14.0"
2197− }
2198− }
2199− }
2200− },
22012170 "abab": {
22022171 "version": "2.0.0",
22032172 "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
@@ -11507,11 +11476,21 @@
1150711476 "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
1150811477 "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
1150911478 },
11479+ "lodash.chunk": {
11480+ "version": "4.2.0",
11481+ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz",
11482+ "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw="
11483+ },
1151011484 "lodash.get": {
1151111485 "version": "4.4.2",
1151211486 "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
1151311487 "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
1151411488 },
11489+ "lodash.isequal": {
11490+ "version": "4.5.0",
11491+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
11492+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
11493+ },
1151511494 "lodash.memoize": {
1151611495 "version": "4.1.2",
1151711496 "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -17522,9 +17501,9 @@
1752217501 "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg="
1752317502 },
1752417503 "urbit-key-generation": {
17525− "version": "0.16.0",
17526− "resolved": "https://registry.npmjs.org/urbit-key-generation/-/urbit-key-generation-0.16.0.tgz",
17527− "integrity": "sha512-3nwiIb2OGg0KdT/k+iJGjJJ5hUjPt64gmUu6wbDkLCfPLAn0xMN0FqaBd9mEc0niqWH1z6v0iJR4N7Vv0xMPVg==",
17504+ "version": "0.17.1",
17505+ "resolved": "https://registry.npmjs.org/urbit-key-generation/-/urbit-key-generation-0.17.1.tgz",
17506+ "integrity": "sha512-pAbpl7dDi/VsNm1wMSLLVKByJcOH4GxbW5HwjAB8UxR2SToHBpgQh/B8BZ2BuS+9yCc1xWWzRveO/aKcxqJ/VQ==",
1752817507 "requires": {
1752917508 "argon2-wasm": "^0.9.0",
1753017509 "bip32": "^1.0.2",
@@ -17533,32 +17512,35 @@
1753317512 "keccak": "^1.4.0",
1753417513 "secp256k1": "^3.5.2",
1753517514 "tweetnacl": "^1.0.0",
17536− "urbit-ob": "^4.0.0"
17515+ "urbit-ob": "4.1.1"
1753717516 },
1753817517 "dependencies": {
1753917518 "urbit-ob": {
17540− "version": "4.0.0",
17541− "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-4.0.0.tgz",
17542− "integrity": "sha512-FsVQx4h2Kuu+ZqUOmAUDAQFlw9r1R+B6r9Bu9TnyNDOraLUlojBw5wG5ONbWiK0g7sgeQkQ3rMVyXqiv41Vrpg==",
17519+ "version": "4.1.1",
17520+ "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-4.1.1.tgz",
17521+ "integrity": "sha512-YaUhzaGpFOHZoXr9qp8417kPkEcTlVdzrX+izGlwfLpWIwiSiCoI+0ZiPxgX+uDZmfQ2KqGEQxAS2BosDQne9Q==",
1754317522 "requires": {
1754417523 "bn.js": "^4.11.8",
17545− "lodash": "^4.17.11"
17524+ "lodash.chunk": "^4.2.0",
17525+ "lodash.isequal": "^4.5.0"
1754617526 }
1754717527 }
1754817528 }
1754917529 },
1755017530 "urbit-ob": {
17551− "version": "4.0.1",
17552− "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-4.0.1.tgz",
17553− "integrity": "sha512-+qjXNJ1tTf7hTUU/2uOj0w3RgvfTWSOIug8sM1IBy8AEbEU7H/Mv/oIudVNeR5AQa2WusvTxgfSZ4GxenPZdDg==",
17531+ "version": "4.1.2",
17532+ "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-4.1.2.tgz",
17533+ "integrity": "sha512-r9Y25Lb5gHSgOEZ2hc+NG2qi1fySfQdoqbim4ygz/yQcBZ5mpEuF6DLOON7o01eBx3vspHZeQVQaoFJ9DrCesg==",
1755417534 "requires": {
1755517535 "bn.js": "^4.11.8",
17556− "lodash": "^4.17.11"
17536+ "lodash.chunk": "^4.2.0",
17537+ "lodash.isequal": "^4.5.0"
1755717538 }
1755817539 },
1755917540 "urbit-paper-renderer": {
17560− "version": "github:urbit/PaperRenderer#4a5dd07e3ff2d225d6a955ef6a2ed822c7369422",
17561− "from": "github:urbit/PaperRenderer#rc-2.0",
17541+ "version": "2.0.4",
17542+ "resolved": "https://registry.npmjs.org/urbit-paper-renderer/-/urbit-paper-renderer-2.0.4.tgz",
17543+ "integrity": "sha512-mwyyLSr6gh1YDQZELU7gktGHQWVhniJ1bOTtEJOSrt0KY2EML5uDGYabl0wLBqFzG9NsgnqEDDCxFhWvWCMUcw==",
1756217544 "requires": {
1756317545 "lodash.get": "^4.4.2",
1756417546 "prop-types": "^15.7.2",
@@ -17576,9 +17558,9 @@
1757617558 }
1757717559 },
1757817560 "urbit-sigil-js": {
17579− "version": "1.3.7",
17580− "resolved": "https://registry.npmjs.org/urbit-sigil-js/-/urbit-sigil-js-1.3.7.tgz",
17581− "integrity": "sha512-s/4sBpzSRX22r39FvNkpaMkt3xI6FJBj79Dp7FtYGR90es4ZLWNY3eA8QVrjHL+pcj4RyX56O62mXrRQ83ZsoQ==",
17561+ "version": "1.3.8",
17562+ "resolved": "https://registry.npmjs.org/urbit-sigil-js/-/urbit-sigil-js-1.3.8.tgz",
17563+ "integrity": "sha512-79sUuTuloZ49+YZjbMwbUB8MGLQcfnceksuuwnux8Vj/m0+GHAzxvxWvRKeQioPnfrLGfjTbQ8vWgfkXWaB/Pg==",
1758217564 "requires": {
1758317565 "react": "^16.8.6",
1758417566 "svgson": "^4.0.0",
package.json+3−4
@@ -18,7 +18,6 @@
1818 "@ledgerhq/hw-app-eth": "^4.61.0",
1919 "@ledgerhq/hw-transport-u2f": "^4.61.0",
2020 "@welldone-software/why-did-you-render": "^3.2.3",
21− "PaperRenderer": "github:urbit/PaperRenderer#rc-2.0",
2221 "async-retry": "^1.2.3",
2322 "azimuth-js": "^0.15.1",
2423 "azimuth-solidity": "^1.2.0",
@@ -49,9 +48,9 @@
4948 "react-teleporter": "^1.1.0",
5049 "secp256k1": "^3.5.2",
5150 "trezor-connect": "^7.0.1",
52− "urbit-key-generation": "^0.16.0",
53− "urbit-ob": "^4.0.1",
54− "urbit-paper-renderer": "github:urbit/PaperRenderer#rc-2.0",
51+ "urbit-key-generation": "^0.17.1",
52+ "urbit-ob": "^4.1.2",
53+ "urbit-paper-renderer": "^2.0.4",
5554 "urbit-sigil-js": "^1.3.5",
5655 "web3": "1.0.0-beta.54",
5756 "web3-utils": "^1.0.0-beta.52"
src/components/Greeting.js+1−1
@@ -1,6 +1,6 @@
11import React, { useCallback } from 'react';
22import cn from 'classnames';
3−import * as ob from 'urbit-ob';
3+import ob from 'urbit-ob';
44import { Grid, Text, LinkButton } from 'indigo-react';
55
66import { useLocalRouter } from 'lib/LocalRouter';
src/components/MaybeSigil.js+1−1
@@ -1,5 +1,5 @@
11import React from 'react';
2−import * as ob from 'urbit-ob';
2+import ob from 'urbit-ob';
33
44import Sigil from './Sigil';
55import AspectRatio from './AspectRatio';
src/components/PaperBuilder.js+6−4
@@ -1,14 +1,16 @@
11import React from 'react';
22import PaperRenderer from 'urbit-paper-renderer';
33
4−export default function PaperBuilder({ point, wallet, callback, ...props }) {
4+export default function PaperBuilder({ point, wallets, callback, ...props }) {
55 return (
66 <PaperRenderer
7− wallet={[wallet]}
8− callback={callback}
9− className="super-hidden"
7+ wallets={wallets}
8+ callback={data => {
9+ callback(data);
10+ }}
1011 show={false}
1112 debug={false}
13+ output={'png'}
1214 />
1315 );
1416}
src/components/Passport.js+1−1
@@ -1,7 +1,7 @@
11import React, { useMemo } from 'react';
22import cn from 'classnames';
33import { Just, Nothing } from 'folktale/maybe';
4−import * as ob from 'urbit-ob';
4+import ob from 'urbit-ob';
55import { Grid, Flex, Text } from 'indigo-react';
66import { times } from 'lodash';
77
src/lib/invite.js+16−23
@@ -10,32 +10,25 @@ export async function generateWallet(point) {
1010}
1111
1212//TODO should be moved to lib/walletgen
13−export async function downloadWallet(paper) {
14− return new Promise((resolve, reject) => {
13+export async function downloadWallet(paperWallets) {
14+ if (paperWallets.length === 1) {
1515 const zip = new JSZip();
16− //TODO the categories here aren't explained in bridge at all...
1716
18− const bin0 = paper.filter(item => item.bin === '0');
19− const bin1 = paper.filter(item => item.bin === '1');
20− const bin2 = paper.filter(item => item.bin === '2');
21− const bin3 = paper.filter(item => item.bin === '3');
22− const bin4 = paper.filter(item => item.bin === '4');
17+ const wallet = paperWallets[0];
18+ const ship = wallet.wallet.meta.patp.replace('~', '');
19+ const zipName = `${ship}-passport`;
20+ const folder = zip.folder(zipName);
2321
24− const bin0Folder = zip.folder('0. Public');
25− const bin1Folder = zip.folder('1. Very High Friction Custody');
26− const bin2Folder = zip.folder('2. High Friction Custody');
27− const bin3Folder = zip.folder('3. Medium Friction Custody');
28− const bin4Folder = zip.folder('4. Low Friction Custody');
29−
30− bin0.forEach(item => bin0Folder.file(`${item.pageTitle}.png`, item.png));
31− bin1.forEach(item => bin1Folder.file(`${item.pageTitle}.png`, item.png));
32− bin2.forEach(item => bin2Folder.file(`${item.pageTitle}.png`, item.png));
33− bin3.forEach(item => bin3Folder.file(`${item.pageTitle}.png`, item.png));
34− bin4.forEach(item => bin4Folder.file(`${item.pageTitle}.png`, item.png));
22+ wallet.frames.forEach(frame => {
23+ const filename = `${ship}-${frame.givenName}.png`;
24+ folder.file(filename, frame.image);
25+ });
3526
36− zip.generateAsync({ type: 'blob' }).then(content => {
37− saveAs(content, 'urbit-wallet.zip');
38− resolve(true);
27+ await zip.generateAsync({ type: 'blob' }).then(content => {
28+ saveAs(content, `${zipName}.zip`);
29+ // resolve(true);
3930 });
40− });
31+ } else {
32+ console.error('downloadWallet() can only download 1 wallet at a time.');
33+ }
4134}
src/lib/lib.js+1−1
@@ -1,4 +1,4 @@
1−import * as ob from 'urbit-ob';
1+import ob from 'urbit-ob';
22import patp2dec from './patp2dec';
33
44const compose = (...fs) =>
src/lib/patp2dec.js+1−1
@@ -1,4 +1,4 @@
1−import * as ob from 'urbit-ob';
1+import ob from 'urbit-ob';
22
33import convertToInt from './convertToInt';
44
src/lib/useCurrentPointName.js+1−1
@@ -1,4 +1,4 @@
1−import * as ob from 'urbit-ob';
1+import ob from 'urbit-ob';
22
33import { usePointCursor } from 'store/pointCursor';
44
src/lib/useImpliedPoint.js+1−1
@@ -1,4 +1,4 @@
1−import * as ob from 'urbit-ob';
1+import ob from 'urbit-ob';
22
33import { ensurePatFormat } from 'form/formatters';
44
src/lib/useImpliedTicket.js+1−1
@@ -1,4 +1,4 @@
1−import * as ob from 'urbit-ob';
1+import ob from 'urbit-ob';
22
33import { ensurePatFormat } from 'form/formatters';
44
src/lib/useKeyfileGenerator.js+1−1
@@ -1,7 +1,7 @@
11import { useCallback, useEffect, useState } from 'react';
22import { Just, Nothing } from 'folktale/maybe';
33import saveAs from 'file-saver';
4−import * as ob from 'urbit-ob';
4+import ob from 'urbit-ob';
55
66import { usePointCache } from 'store/pointCache';
77import { useWallet } from 'store/wallet';
src/lib/validators.js+1−1
@@ -1,5 +1,5 @@
11import * as bip39 from 'bip39';
2−import * as ob from 'urbit-ob';
2+import ob from 'urbit-ob';
33import { includes } from 'lodash';
44
55import { isValidAddress, ETH_ZERO_ADDR, ETH_ZERO_ADDR_SHORT } from './wallet';
src/lib/wallet.js+1−1
@@ -4,7 +4,7 @@ import keccak from 'keccak';
44import { reduce } from 'lodash';
55import { Just, Nothing } from 'folktale/maybe';
66import * as secp256k1 from 'secp256k1';
7−import * as kg from 'urbit-key-generation/dist';
7+import * as kg from 'urbit-key-generation';
88import { isAddress } from 'web3-utils';
99
1010export const DEFAULT_HD_PATH = "m/44'/60'/0'/0/0";
src/lib/walletgen.js+2−2
@@ -1,5 +1,5 @@
1−import * as ob from 'urbit-ob';
2−import * as kg from 'urbit-key-generation/dist';
1+import ob from 'urbit-ob';
2+import kg from 'urbit-key-generation';
33import * as more from 'more-entropy';
44import { chunk, flatMap, zipWith } from 'lodash';
55
src/views/Activate/PassportDownload.js+4−2
@@ -79,8 +79,10 @@ export default function PassportDownload({ className }) {
7979 </PassportView>
8080 <PaperBuilder
8181 point={pointAsString}
82− wallet={wallet}
83− callback={data => setPaper(Just(data))}
82+ wallets={[wallet]}
83+ callback={data => {
84+ setPaper(Just(data));
85+ }}
8486 />
8587 </>
8688 );
src/views/Admin/AdminRedownload.js+1−1
@@ -62,7 +62,7 @@ export default function AdminRedownload() {
6262 </Grid>
6363 <PaperBuilder
6464 point={point}
65− wallet={_urbitWallet}
65+ wallets={[_urbitWallet]}
6666 callback={paper => {
6767 setPaper(Just(paper));
6868 }}
src/views/Admin/Reticket/ReticketConfirm.js+1−1
@@ -56,7 +56,7 @@ export default function ReticketConfirm({ newWallet, setNewWallet }) {
5656 Just: ({ value: wallet }) => (
5757 <PaperBuilder
5858 point={point}
59− wallet={wallet}
59+ wallets={[wallet]}
6060 callback={paper => {
6161 setNewWallet(wallet, paper);
6262 }}
src/views/Invite/InviteEmail.js+1−1
@@ -6,7 +6,7 @@ import React, {
66 useState,
77} from 'react';
88import cn from 'classnames';
9−import * as ob from 'urbit-ob';
9+import ob from 'urbit-ob';
1010import * as azimuth from 'azimuth-js';
1111import {
1212 Grid,
src/views/IssueChild.js+1−1
@@ -2,7 +2,7 @@ import React, { useCallback, useMemo, useState } from 'react';
22import cn from 'classnames';
33import { Grid, Text } from 'indigo-react';
44import * as azimuth from 'azimuth-js';
5−import * as ob from 'urbit-ob';
5+import ob from 'urbit-ob';
66
77import { useNetwork } from 'store/network';
88import { usePointCache } from 'store/pointCache';
src/views/Login/Ticket.js+1−1
@@ -2,7 +2,7 @@ import React, { useCallback, useMemo, useRef } from 'react';
22import { Just } from 'folktale/maybe';
33import cn from 'classnames';
44import * as azimuth from 'azimuth-js';
5−import * as kg from 'urbit-key-generation/dist/index';
5+import * as kg from 'urbit-key-generation/dist';
66import { Grid, CheckboxInput, Flex, ToggleInput } from 'indigo-react';
77import { FORM_ERROR } from 'final-form';
88