@@ -1,4 +1,3 @@
1−import * as azimuth from 'azimuth-js';
21import * as need from 'lib/need';
32import * as ob from 'urbit-ob';
43import { WARNING } from 'form/helpers';
@@ -19,13 +18,10 @@ import { useActivateFlow } from './ActivateFlow';
1918import WarningBox from 'components/WarningBox';
2019import useRoller from 'lib/useRoller';
2120import useImpliedTicket from 'lib/useImpliedTicket';
22−import {
23− generateTemporaryOwnershipWallet,
24− generateWallet,
25−} from 'lib/walletgen';
21+import { generateOwnershipWallet } from 'lib/walletgen';
22+import { generateWallet } from 'lib/invite';
2623import { 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';
2925import useBreakpoints from 'lib/useBreakpoints';
3026import { Ship } from '@urbit/roller-api';
3127import { convertToInt } from 'lib/convertToInt';
@@ -39,9 +35,13 @@ interface ActivateCodeFormProps {
3935}
4036
4137const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
42− const { contracts } = useNetwork();
4338 const { api, getPoints } = useRoller();
44− const { impliedAzimuthPoint, impliedTicket } = useImpliedTicket();
39+ const {
40+ impliedAzimuthPoint,
41+ impliedTicket,
42+ impliedPatp,
43+ } = useImpliedTicket();
44+ console.log(impliedAzimuthPoint, impliedTicket);
4545 const didWarn = useRef<boolean>(false);
4646
4747 const {
@@ -80,27 +80,23 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
8080 [validateForm]
8181 );
8282
83− const loadL1Points = useCallback(
84− async (address: string): Promise<number[]> => {
85− const _contracts = need.contracts(contracts);
86− const owned = await azimuth.azimuth.getOwnedPoints(_contracts, address);
87− const transferring = await azimuth.azimuth.getTransferringFor(
88− _contracts,
89− address
90− );
91− const incoming = [...owned, ...transferring];
92− console.log('incoming L1 points', incoming);
93− return incoming;
94− },
95− [contracts]
96− );
97−
98− const loadl2points = useCallback(
83+ const getTicketAndPoint = (invite: string) => {
84+ const segments = invite.split('-');
85+ console.log(segments);
86+ return {
87+ ticket: segments.slice(0, 4).join('-'),
88+ point: impliedPatp
89+ ? ob.patp2dec(impliedPatp)
90+ : ob.patp2dec(`~${segments.slice(4, segments.length).join('-')}`),
91+ };
92+ };
93+
94+ const loadPoints = useCallback(
9995 async (address: string): Promise<Ship[]> => {
10096 const owned = await getPoints(POINT_PROXIES.OWN, address);
10197 const transferring = await getPoints(POINT_PROXIES.TRANSFER, address);
10298 const incoming = [...owned, ...transferring];
103− console.log('incoming L2 points', incoming);
99+ console.log('incoming points', incoming);
104100 return incoming;
105101 },
106102 [getPoints]
@@ -113,21 +109,16 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
113109 await timeout(42);
114110
115111 // Derive wallet
116− const ticket = impliedTicket || values.ticket;
117− const { seed } = await generateTemporaryOwnershipWallet(ticket);
112+ const { ticket, point } = getTicketAndPoint(
113+ impliedTicket || values.ticket
114+ );
115+ const { seed } = await generateOwnershipWallet(point, ticket);
118116 const inviteWallet = walletFromMnemonic(seed, DEFAULT_HD_PATH);
119117 setInviteWallet(inviteWallet);
120118 const _inviteWallet = need.wallet(inviteWallet);
121119 const inviteAddress = _inviteWallet.address;
122120
123− // Query for points depending on point's dominion
124− const rollerPoint = await api.getPoint(impliedAzimuthPoint!);
125− let incoming: number[] | Ship[];
126− if (rollerPoint.dominion === POINT_DOMINIONS.L2) {
127− incoming = await loadl2points(inviteAddress);
128− } else {
129− incoming = await loadL1Points(inviteAddress);
130− }
121+ let incoming: number[] | Ship[] = await loadPoints(inviteAddress);
131122
132123 // Set derived
133124 if (incoming.length > 0) {
@@ -143,11 +134,12 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
143134 }
144135
145136 const point = convertToInt(incoming[0], 10);
137+ const rollerPoint = await api.getPoint(point!);
146138
147139 setDerivedPatp(Just(ob.patp(point)));
148140 setDerivedPoint(Just(point));
149141 setDerivedPointDominion(Just(rollerPoint.dominion));
150− setDerivedWallet(Just(await generateWallet(point, ticket, true)));
142+ setDerivedWallet(Just(await generateWallet(point, true)));
151143 setIsIn(false);
152144 await timeout(100);
153145 } else {
@@ -160,10 +152,9 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
160152 },
161153 [
162154 api,
163− impliedAzimuthPoint,
164155 impliedTicket,
165− loadL1Points,
166− loadl2points,
156+ getTicketAndPoint,
157+ loadPoints,
167158 setDerivedPatp,
168159 setDerivedPoint,
169160 setDerivedPointDominion,