@@ -2,7 +2,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
2import { azimuth } from 'azimuth-js';
2import { azimuth } from 'azimuth-js';
3import { Just } from 'folktale/maybe';
3import { Just } from 'folktale/maybe';
4import { Grid, Flex } from 'indigo-react';
4import { Grid, Flex } from 'indigo-react';
5−import { Box, Icon, Row, Button } from '@tlon/indigo-react';
5+import { Box, Icon, Row, Button, Checkbox } from '@tlon/indigo-react';
7import { usePointCursor } from 'store/pointCursor';
7import { usePointCursor } from 'store/pointCursor';
8import { useWallet } from 'store/wallet';
8import { useWallet } from 'store/wallet';
@@ -22,6 +22,7 @@ import useInvites from 'lib/useInvites';
22import useCurrentPermissions from 'lib/useCurrentPermissions';
22import useCurrentPermissions from 'lib/useCurrentPermissions';
23import { useLocalRouter } from 'lib/LocalRouter';
23import { useLocalRouter } from 'lib/LocalRouter';
24import useRoller from 'lib/useRoller';
24import useRoller from 'lib/useRoller';
25+import useSeenMissingKeys from 'lib/useSeenMissingKeys';
26import './Point.scss';
27import './Point.scss';
27import { isL2 } from 'lib/utils/roller';
28import { isL2 } from 'lib/utils/roller';
@@ -49,6 +50,8 @@ export default function Point() {
49 } = useRollerStore();
50 } = useRollerStore();
50 const networkKeysSet = useHasNetworkKeysSet();
51 const networkKeysSet = useHasNetworkKeysSet();
51 const [showModal, setShowModal] = useState(false);
52 const [showModal, setShowModal] = useState(false);
53+ const [seenMissingKeys, setSeeingMissingKeys] = useSeenMissingKeys();
54+ const [hideMessage, setHideMessage] = useState(false);
53 useEffect(() => {
56 useEffect(() => {
54 setShowModal(!networkKeysSet);
57 setShowModal(!networkKeysSet);
@@ -109,7 +112,11 @@ export default function Point() {
110 const goCohort = useCallback(() => push(names.INVITE_COHORT), [push, names]);
113 const goCohort = useCallback(() => push(names.INVITE_COHORT), [push, names]);
112− const goUrbitOS = useCallback(() => push(names.URBIT_OS), [push, names]);
115+ const goUrbitOS = useCallback(() => {
116+ if (hideMessage) setSeeingMissingKeys(hideMessage);
118+ push(names.URBIT_OS);
119+ }, [push, names, hideMessage, setSeeingMissingKeys]);
114 const goUrbitID = useCallback(() => push(names.URBIT_ID), [push, names]);
121 const goUrbitID = useCallback(() => push(names.URBIT_ID), [push, names]);
@@ -248,23 +255,31 @@ export default function Point() {
249 {senateButton}
256 {senateButton}
259+ show={showModal && !seenMissingKeys}
251− <Modal show={showModal} hide={() => setShowModal(false)}>
260+ hide={() => setShowModal(false)}>
252 <Box className="network-keys-modal">
261 <Box className="network-keys-modal">
253 <Box className="close" onClick={() => setShowModal(false)}>
262 <Box className="close" onClick={() => setShowModal(false)}>
256− <Box className="title">Network Keys Not Set</Box>
265+ <Box className="title">No Network Keys Found</Box>
257 <Box className="message">
266 <Box className="message">
258− This point's network keys are not set. The network keys must be set
267+ Network Keys are required to generate a Keyfile and use Landscape.
259− to spawn points or migrate to Layer 2. Please set them in Urbit OS
269+ <Row className="hide-row">
271+ className="checkbox"
272+ selected={hideMessage}
273+ onClick={() => setHideMessage(!hideMessage)}
275+ <Box className="dont-show">Do not warn me again</Box>
262 <Row className="buttons">
277 <Row className="buttons">
263 <Button className="cancel" onClick={() => setShowModal(false)}>
278 <Button className="cancel" onClick={() => setShowModal(false)}>
265 </Button>
280 </Button>
266 <Button className="migrate" onClick={goUrbitOS}>
281 <Button className="migrate" onClick={goUrbitOS}>
267− Set Keys
282+ Set Network Keys
268 </Button>
283 </Button>