@@ -1,4 +1,3 @@
1−import * as azimuth from 'azimuth-js';
2import * as need from 'lib/need';
1import * as need from 'lib/need';
3import * as ob from 'urbit-ob';
2import * as ob from 'urbit-ob';
4import { WARNING } from 'form/helpers';
3import { WARNING } from 'form/helpers';
@@ -19,13 +18,10 @@ import { useActivateFlow } from './ActivateFlow';
19import WarningBox from 'components/WarningBox';
18import WarningBox from 'components/WarningBox';
20import useRoller from 'lib/useRoller';
19import useRoller from 'lib/useRoller';
21import useImpliedTicket from 'lib/useImpliedTicket';
20import useImpliedTicket from 'lib/useImpliedTicket';
23− generateTemporaryOwnershipWallet,
25−} from 'lib/walletgen';
21+import { generateOwnershipWallet } from 'lib/walletgen';
22+import { generateWallet } from 'lib/invite';
26import { walletFromMnemonic } from 'lib/wallet';
23import { walletFromMnemonic } from 'lib/wallet';
27−import { useNetwork } from 'store/network';
28−import { DEFAULT_HD_PATH, POINT_DOMINIONS, POINT_PROXIES } from 'lib/constants';
24+import { DEFAULT_HD_PATH, POINT_PROXIES } from 'lib/constants';
29import useBreakpoints from 'lib/useBreakpoints';
25import useBreakpoints from 'lib/useBreakpoints';
30import { Ship } from '@urbit/roller-api';
26import { Ship } from '@urbit/roller-api';
31import { convertToInt } from 'lib/convertToInt';
27import { convertToInt } from 'lib/convertToInt';
@@ -39,9 +35,13 @@ interface ActivateCodeFormProps {
41const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
37const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
42− const { contracts } = useNetwork();
43 const { api, getPoints } = useRoller();
38 const { api, getPoints } = useRoller();
44− const { impliedAzimuthPoint, impliedTicket } = useImpliedTicket();
40+ impliedAzimuthPoint,
43+ } = useImpliedTicket();
44+ console.log(impliedAzimuthPoint, impliedTicket);
45 const didWarn = useRef<boolean>(false);
45 const didWarn = useRef<boolean>(false);
@@ -80,27 +80,23 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
80 [validateForm]
80 [validateForm]
83− const loadL1Points = useCallback(
83+ const getTicketAndPoint = (invite: string) => {
84− async (address: string): Promise<number[]> => {
84+ const segments = invite.split('-');
85− const _contracts = need.contracts(contracts);
85+ console.log(segments);
86− const owned = await azimuth.azimuth.getOwnedPoints(_contracts, address);
87− const transferring = await azimuth.azimuth.getTransferringFor(
91− const incoming = [...owned, ...transferring];
92− console.log('incoming L1 points', incoming);
93− return incoming;
86+ return {
94− },
87+ ticket: segments.slice(0, 4).join('-'),
95− [contracts]
88+ point: impliedPatp
89+ ? ob.patp2dec(impliedPatp)
90+ : ob.patp2dec(`~${segments.slice(4, segments.length).join('-')}`),
98− const loadl2points = useCallback(
94+ const loadPoints = useCallback(
99 async (address: string): Promise<Ship[]> => {
95 async (address: string): Promise<Ship[]> => {
100 const owned = await getPoints(POINT_PROXIES.OWN, address);
96 const owned = await getPoints(POINT_PROXIES.OWN, address);
101 const transferring = await getPoints(POINT_PROXIES.TRANSFER, address);
97 const transferring = await getPoints(POINT_PROXIES.TRANSFER, address);
102 const incoming = [...owned, ...transferring];
98 const incoming = [...owned, ...transferring];
103− console.log('incoming L2 points', incoming);
99+ console.log('incoming points', incoming);
104 return incoming;
100 return incoming;
106 [getPoints]
102 [getPoints]
@@ -113,21 +109,16 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
113 await timeout(42);
109 await timeout(42);
115 // Derive wallet
111 // Derive wallet
112+ const { ticket, point } = getTicketAndPoint(
116− const ticket = impliedTicket || values.ticket;
113+ impliedTicket || values.ticket
117− const { seed } = await generateTemporaryOwnershipWallet(ticket);
115+ const { seed } = await generateOwnershipWallet(point, ticket);
118 const inviteWallet = walletFromMnemonic(seed, DEFAULT_HD_PATH);
116 const inviteWallet = walletFromMnemonic(seed, DEFAULT_HD_PATH);
119 setInviteWallet(inviteWallet);
117 setInviteWallet(inviteWallet);
120 const _inviteWallet = need.wallet(inviteWallet);
118 const _inviteWallet = need.wallet(inviteWallet);
121 const inviteAddress = _inviteWallet.address;
119 const inviteAddress = _inviteWallet.address;
123− // Query for points depending on point's dominion
124− const rollerPoint = await api.getPoint(impliedAzimuthPoint!);
125− let incoming: number[] | Ship[];
121+ let incoming: number[] | Ship[] = await loadPoints(inviteAddress);
126− if (rollerPoint.dominion === POINT_DOMINIONS.L2) {
127− incoming = await loadl2points(inviteAddress);
129− incoming = await loadL1Points(inviteAddress);
132 // Set derived
123 // Set derived
133 if (incoming.length > 0) {
124 if (incoming.length > 0) {
@@ -143,11 +134,12 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
145 const point = convertToInt(incoming[0], 10);
136 const point = convertToInt(incoming[0], 10);
137+ const rollerPoint = await api.getPoint(point!);
147 setDerivedPatp(Just(ob.patp(point)));
139 setDerivedPatp(Just(ob.patp(point)));
148 setDerivedPoint(Just(point));
140 setDerivedPoint(Just(point));
149 setDerivedPointDominion(Just(rollerPoint.dominion));
141 setDerivedPointDominion(Just(rollerPoint.dominion));
150− setDerivedWallet(Just(await generateWallet(point, ticket, true)));
142+ setDerivedWallet(Just(await generateWallet(point, true)));
151 setIsIn(false);
143 setIsIn(false);
152 await timeout(100);
144 await timeout(100);
@@ -160,10 +152,9 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
163− impliedAzimuthPoint,
164 impliedTicket,
155 impliedTicket,
165− loadL1Points,
156+ getTicketAndPoint,
166− loadl2points,
157+ loadPoints,
167 setDerivedPatp,
158 setDerivedPatp,
168 setDerivedPoint,
159 setDerivedPoint,
169 setDerivedPointDominion,
160 setDerivedPointDominion,