@@ -16,6 +16,7 @@ import CopiableWithTooltip from 'components/copiable/CopiableWithTooltip';
16import './UrbitOS.scss';
16import './UrbitOS.scss';
17import Modal from 'components/L2/Modal';
17import Modal from 'components/L2/Modal';
18import { useRollerStore } from 'store/rollerStore';
18import { useRollerStore } from 'store/rollerStore';
19+import WithTooltip from 'components/WithTooltip';
20export default function UrbitOSHome() {
21export default function UrbitOSHome() {
21 const { point } = useRollerStore();
22 const { point } = useRollerStore();
@@ -42,22 +43,40 @@ export default function UrbitOSHome() {
45− const { code, download } = useSingleKeyfileGenerator({});
46+ const { available, code, download, generating } = useSingleKeyfileGenerator(
49+ const keyfileAvailable = available && !generating;
51+ const headerButton = () => {
52+ if (!hasSetNetworkKeys) {
57+ return <Box className="header-button keyfile">Generating...</Box>;
60+ return keyfileAvailable ? (
61+ <Button className="header-button keyfile" onClick={download}>
66+ <WithTooltip content="Either the key was derived non-deterministically, or try Login > Use Legacy Compatibility">
67+ <Box className="header-button keyfile-unavailable">
48 <Window className="os-home">
75 <Window className="os-home">
49 <HeaderPane>
76 <HeaderPane>
50 <Row className="header-row">
77 <Row className="header-row">
51 <h5>OS</h5>
78 <h5>OS</h5>
52− {hasSetNetworkKeys && (
79+ {headerButton()}
54− className="header-button keyfile"
55− disabled={!hasSetNetworkKeys}
62 </HeaderPane>
81 </HeaderPane>
63 <BodyPane>
82 <BodyPane>