@@ -1,141 +1,39 @@
1−import React, { useState, useCallback, useMemo, useEffect } from 'react';
1+import React, { useState, useCallback, useMemo } from 'react';
3−import { useNetwork } from 'store/network';
4−import { useWallet } from 'store/wallet';
5−import { useHistory } from 'store/history';
6−import { usePointCursor } from 'store/pointCursor';
8−import * as need from 'lib/need';
9import useLifecycle from 'lib/useLifecycle';
3import useLifecycle from 'lib/useLifecycle';
10−import useBlockWindowClose from 'lib/useBlockWindowClose';
11−import { reticketPointBetweenWallets } from 'lib/reticket';
13import { Anchor, Box, Text } from '@tlon/indigo-react';
5import { Anchor, Box, Text } from '@tlon/indigo-react';
14import { useActivateFlow } from './ActivateFlow';
6import { useActivateFlow } from './ActivateFlow';
15import ActivateView from './ActivateView';
7import ActivateView from './ActivateView';
16−import { POINT_DOMINIONS } from 'lib/constants';
17−import { From } from '@urbit/roller-api';
18import useRoller from 'lib/useRoller';
8import useRoller from 'lib/useRoller';
19import { FadeableActivateHeader as ActivateHeader } from './ActivateHeader';
9import { FadeableActivateHeader as ActivateHeader } from './ActivateHeader';
20import { FadeableActivateButton as ActivateButton } from './ActivateButton';
10import { FadeableActivateButton as ActivateButton } from './ActivateButton';
21import useFadeIn from './useFadeIn';
11import useFadeIn from './useFadeIn';
22import PointPresenter from './PointPresenter';
12import PointPresenter from './PointPresenter';
13+import DangerBox from './DangerBox';
24−const MasterKeyTransfer = ({ className, resetActivateRouter }) => {
15+const MasterKeyTransfer = () => {
25− const { replaceWith, names } = useHistory();
26− const { setUrbitWallet } = useWallet();
27− const { setPointCursor } = usePointCursor();
28− const { web3, contracts, networkType } = useNetwork();
29 const { api, transferPoint } = useRoller();
16 const { api, transferPoint } = useRoller();
33− derivedPointDominion,
36− reset: resetActivateFlow,
37− } = useActivateFlow();
17+ const { derivedPatp, derivedPoint, derivedWallet } = useActivateFlow();
38− const [generalError, setGeneralError] = useState();
18+ const [error, setError] = useState();
39− const [progress, setProcesss] = useState(0);
40− const [needFunds, setNeedFunds] = useState();
42− // const [transferTxHash, setTransferTxHash] = useState<string | null>(null);
44− const _inviteWallet = need.wallet(inviteWallet);
45− const _wallet = need.wallet(derivedWallet);
46− const _point = need.point(derivedPoint);
47− const _web3 = need.web3(web3);
48− const _contracts = need.contracts(contracts);
50− const goToLogin = useCallback(
51− () => replaceWith([{ key: names.LOGIN }, { key: names.POINT }]),
55− const goToRestart = useCallback(() => {
56− // NOTE: because we're already on the ACTIVATE view in the history,
57− // react (intelligently) doesn't trigger a re-render and that means the
58− // current state of the two nested routers (activate & passport) stick
59− // around unless we manually clear them.
60− // we only need to clear activate because that will unmount the passport
61− // router (which will be set to initialRoutes when mounted again)
63− // 2) reset local router
64− resetActivateRouter();
65− // 3) clear the state
67− }, [resetActivateRouter, resetActivateFlow]);
69− const claimL2Point = useCallback(async () => {
70− console.log('claiming l2 point:');
71− const transferFrom: From = {
72− ship: derivedPatp.value,
76− const l2point = await api.getPoint(derivedPoint.value);
77− const fromAddress = l2point.ownership?.owner?.address!;
78− const txHash = await transferPoint({
79− point: derivedPoint.value,
81− to: _inviteWallet.address,
82− fromAddress: fromAddress,
83− signingKey: derivedWallet.value.ownership.keys.private,
86− // setTransferTxHash(txHash);
88− _inviteWallet.address,
96− // const claimL1Point = useCallback(async () => {
97− // await reticketPointBetweenWallets({
98− // fromWallet: _inviteWallet,
99− // toWallet: _wallet,
102− // contracts: _contracts,
104− // onUpdate: handleUpdate,
105− // transferEth: true,
106− // //NOTE not passing wc function, we always have invite ticket wallet
108− // }, [_contracts, _inviteWallet, _point, _wallet, _web3, networkType]);
110 const claimPoint = useCallback(async () => {
20 const claimPoint = useCallback(async () => {
111− setGeneralError(false);
21+ setError(undefined);
114− // If L2
24+ const l2point = await api.getPoint(derivedPoint.value);
115− if (derivedPointDominion.value === POINT_DOMINIONS.L2) {
25+ await transferPoint({
116− await claimL2Point();
118− // await claimL1Point();
119− console.log('do nothing for now');
124− // set the global wallet
125− // setUrbitWallet(derivedWallet);
126− // setPointCursor(derivedPoint);
26+ point: derivedPoint.value,
127−
27+ to: derivedWallet.value.ownership.address,
128− // and redirect to login
28+ ownerAddress: l2point.ownership?.owner?.address!,
129− // await timeout(3000);
29+ wallet: derivedWallet.value,
130− // goToLogin();
30+ });
131 } catch (error) {
31 } catch (error) {
132 console.error(error);
32 console.error(error);
133− // some generic error
33+ setError(error);
134− setGeneralError(error);
136− }, [derivedPointDominion, claimL2Point]);
35+ }, [api, derivedPoint.value, derivedWallet.value, transferPoint]);
138− // useBlockWindowClose();
139 useFadeIn();
37 useFadeIn();
141 useLifecycle(() => {
39 useLifecycle(() => {
@@ -165,13 +63,15 @@ const MasterKeyTransfer = ({ className, resetActivateRouter }) => {
165 flexDirection={'column'}
63 flexDirection={'column'}
166 flexWrap={'nowrap'}
64 flexWrap={'nowrap'}
167 justifyContent={'space-between'}>
65 justifyContent={'space-between'}>
66+ {error && <DangerBox>{error.toString()}</DangerBox>}
168 <ActivateButton
67 <ActivateButton
169 onClick={() =>
68 onClick={() =>
170 window.open(
69 window.open(
171 'https://github.com/urbit/port/releases/latest/download/Port.dmg'
70 'https://github.com/urbit/port/releases/latest/download/Port.dmg'
174− success={true}>
73+ success={true}
175 Download the Client for Mac
75 Download the Client for Mac
176 </ActivateButton>
76 </ActivateButton>
@@ -188,7 +88,7 @@ const MasterKeyTransfer = ({ className, resetActivateRouter }) => {
188 </Anchor>
88 </Anchor>
191− }, []);
91+ }, [error]);
194 <ActivateView header={header} footer={footer}>
94 <ActivateView header={header} footer={footer}>