@@ -1,7 +1,7 @@
1−import { useCallback, useEffect, useMemo, useRef } from 'react';
1+import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2import { Just } from 'folktale/maybe';
2import { Just } from 'folktale/maybe';
3import * as azimuth from 'azimuth-js';
3import * as azimuth from 'azimuth-js';
4−import { Grid, H4, P, CheckboxInput } from 'indigo-react';
4+import { Grid, CheckboxInput } from 'indigo-react';
5import { FORM_ERROR } from 'final-form';
5import { FORM_ERROR } from 'final-form';
7import View from 'components/View';
7import View from 'components/View';
@@ -44,6 +44,7 @@ import useRoller from 'lib/useRoller';
44import { Ship } from '@urbit/roller-api';
44import { Ship } from '@urbit/roller-api';
45import { Box, Text } from '@tlon/indigo-react';
45import { Box, Text } from '@tlon/indigo-react';
46import ActivateHeader from './ActivateHeader';
46import ActivateHeader from './ActivateHeader';
47+import { MasterKey } from './MasterKey';
48export default function ActivateCode() {
49export default function ActivateCode() {
49 const history = useHistory();
50 const history = useHistory();
@@ -57,6 +58,7 @@ export default function ActivateCode() {
57 const [hasDisclaimed] = useHasDisclaimed();
58 const [hasDisclaimed] = useHasDisclaimed();
58 const didWarn = useRef(false);
59 const didWarn = useRef(false);
59 const { api, getPoints } = useRoller();
60 const { api, getPoints } = useRoller();
61+ const [isGenerating, setIsGenerating] = useState<boolean>(false);
62 setDerivedPoint,
64 setDerivedPoint,
@@ -128,6 +130,7 @@ export default function ActivateCode() {
128 // derive and set our state on submission
130 // derive and set our state on submission
129 const onSubmit = useCallback(
131 const onSubmit = useCallback(
130 async values => {
132 async values => {
133+ setIsGenerating(true);
131 await timeout(16); // allow the ui changes to flush before we lag it out
134 await timeout(16); // allow the ui changes to flush before we lag it out
133 // Derive wallet
136 // Derive wallet
@@ -152,6 +155,7 @@ export default function ActivateCode() {
152 if (incoming.length > 0) {
155 if (incoming.length > 0) {
153 if (incoming.length > 1 && !didWarn.current) {
156 if (incoming.length > 1 && !didWarn.current) {
154 didWarn.current = true;
157 didWarn.current = true;
158+ setIsGenerating(false);
157 [WARNING]:
161 [WARNING]:
@@ -162,11 +166,12 @@ export default function ActivateCode() {
164 const point = convertToInt(incoming[0], 10);
168 const point = convertToInt(incoming[0], 10);
165− console.log('submitting point', point);
167 setDerivedPoint(Just(point));
170 setDerivedPoint(Just(point));
168 setDerivedWallet(Just(await generateWallet(point, true)));
171 setDerivedWallet(Just(await generateWallet(point, true)));
173+ setIsGenerating(false);
171 [FORM_ERROR]:
176 [FORM_ERROR]:
172 'Invite code has no claimable point.\n' +
177 'Invite code has no claimable point.\n' +
@@ -209,6 +214,7 @@ export default function ActivateCode() {
209 display="flex"
214 display="flex"
210 flexDirection="column"
215 flexDirection="column"
211 flexWrap="nowrap"
216 flexWrap="nowrap"
212 justifyContent="flex-end">
218 justifyContent="flex-end">
214 <BridgeForm
220 <BridgeForm
@@ -279,8 +285,12 @@ export default function ActivateCode() {
280 <View inset>
286 <View inset>
281 <ActivateView
287 <ActivateView
282− header={<ActivateHeader copy={'Welcome. This is your Urbit.'} />}
290+ <ActivateHeader copy={'Welcome. This is your Urbit.'} />
283− footer={footer}>
293+ footer={!isGenerating && footer}>
285 alignItems={'center'}
295 alignItems={'center'}
286 display={'flex'}
296 display={'flex'}
@@ -291,7 +301,20 @@ export default function ActivateCode() {
291 {!impliedTicket && (
301 {!impliedTicket && (
292 <Text className="mb2">Enter your activation code to continue.</Text>
302 <Text className="mb2">Enter your activation code to continue.</Text>
304+ {!isGenerating && impliedPatp && (
294− {impliedPatp && <PointPresenter patp={impliedPatp} />}
305+ <PointPresenter patp={impliedPatp} />
310+ flexDirection={'row'}
313+ height={'min-content'}
314+ justifyContent={'center'}>
296 </ActivateView>
319 </ActivateView>