on master help sign in
fix: clean up logic for login/ticket
commitc6220651f3eb47ce3c3d6fb4f8c2df6844b02d37 authorMatt Condon (shrugs) <mattgcondon@gmail.com> dateMon 5 Aug 2019, 11:50 (7 years ago) parentf4fd597
2 files changed+42−55
src/views/Activate/ActivateCode.js+2−4 src/views/Login/Ticket.js+40−51
src/views/Activate/ActivateCode.js+2−4
@@ -77,11 +77,9 @@ export default function ActivateCode() {
7777 const _contracts = need.contracts(contracts);
7878 const { seed } = await generateTemporaryOwnershipWallet(ticket);
7979
80− // TODO(fang): isn't all this accessible in the ownership object?
81− const inviteWallet = walletFromMnemonic(seed, DEFAULT_HD_PATH);
82− cachedInviteWallet.current = inviteWallet;
80+ cachedInviteWallet.current = walletFromMnemonic(seed, DEFAULT_HD_PATH);
8381
84− const _inviteWallet = need.wallet(inviteWallet);
82+ const _inviteWallet = need.wallet(cachedInviteWallet.current);
8583
8684 const owned = await azimuth.azimuth.getOwnedPoints(
8785 _contracts,
src/views/Login/Ticket.js+40−51
@@ -47,70 +47,59 @@ export default function Ticket({ className, goHome }) {
4747 return errors;
4848 }
4949
50+ await timeout(100); // allow ui events to flush
51+
52+ let ticket;
5053 if (values.useShards) {
5154 if (errors.shard1 || errors.shard2 || errors.shard3) {
5255 return errors;
5356 }
5457
55− // shards
56− try {
57− const ticket = kg.combine([
58− values.shard1,
59− values.shard2,
60− values.shard3,
61− ]);
62− const point = patp2dec(values.point);
63− cachedUrbitWallet.current = await urbitWalletFromTicket(
64− ticket,
65− point,
66− values.passphrase
67− );
68− } catch (error) {
69− console.error(error);
70− return { [FORM_ERROR]: 'Unable to derive wallet from shards.' };
71− }
58+ ticket = kg.combine([values.shard1, values.shard2, values.shard3]);
7259 } else {
7360 if (errors.ticket) {
7461 return errors;
7562 }
7663
77− await timeout(100); // allow ui events to flush
78− try {
79− // ticket
80− const _contracts = need.contracts(contracts);
81− const point = patp2dec(values.point);
64+ ticket = values.ticket;
65+ }
8266
83− console.log('computing...');
84− const urbitWallet = await urbitWalletFromTicket(
85− values.ticket,
67+ try {
68+ // ticket
69+ const _contracts = need.contracts(contracts);
70+ const point = patp2dec(values.point);
71+
72+ cachedUrbitWallet.current = await urbitWalletFromTicket(
73+ ticket,
74+ point,
75+ values.passphrase
76+ );
77+
78+ const [isOwner, isTransferProxy] = await Promise.all([
79+ azimuth.azimuth.isOwner(
80+ _contracts,
81+ point,
82+ cachedUrbitWallet.current.ownership.keys.address
83+ ),
84+ azimuth.azimuth.isTransferProxy(
85+ _contracts,
8686 point,
87− values.passphrase
88− );
89−
90− cachedUrbitWallet.current = urbitWallet;
91−
92− const [isOwner, isTransferProxy] = await Promise.all([
93− azimuth.azimuth.isOwner(
94− _contracts,
95− point,
96− urbitWallet.ownership.keys.address
97− ),
98− azimuth.azimuth.isTransferProxy(
99− _contracts,
100− point,
101− urbitWallet.ownership.keys.address
102− ),
103− ]);
104−
105− if (!isOwner && !isTransferProxy) {
106− // notify the user, but allow login regardless
107− // TODO: warnings
108− // 'This ticket is not the owner of or transfer proxy for this point.'
109− }
110− } catch (error) {
111− console.error(error);
112− return { ticket: 'Unable to derive wallet from ticket.' };
87+ cachedUrbitWallet.current.ownership.keys.address
88+ ),
89+ ]);
90+
91+ if (!isOwner && !isTransferProxy) {
92+ // notify the user, but allow login regardless
93+ // TODO: warnings
94+ // 'This ticket is not the owner of or transfer proxy for this point.'
11395 }
96+ } catch (error) {
97+ console.error(error);
98+ return {
99+ [FORM_ERROR]: `Unable to derive wallet from ${
100+ values.useShards ? 'shards' : 'ticket'
101+ }.`,
102+ };
114103 }
115104 },
116105 [contracts]