on master help sign in
handle non planet sponsor case
ee01fbfLiam Fitzgerald
src/views/UrbitOS/ChangeSponsor.js+26−11
@@ -44,8 +44,10 @@ function useChangeSponsor() {
44
44
45function ChangeSponsor({ onDone }) {
45function ChangeSponsor({ onDone }) {
46 const { contracts } = useNetwork();
46 const { contracts } = useNetwork();
47+ const { pointCursor } = usePointCursor();
47
48
48 const _contracts = need.contracts(contracts);
49 const _contracts = need.contracts(contracts);
50+ const point = need.point(pointCursor);
49 const { construct, unconstruct, inputsLocked, bind } = useChangeSponsor();
51 const { construct, unconstruct, inputsLocked, bind } = useChangeSponsor();
50
52
51 const validateFormAsync = useCallback(
53 const validateFormAsync = useCallback(
@@ -70,16 +72,18 @@ function ChangeSponsor({ onDone }) {
70 [validateFormAsync]
72 [validateFormAsync]
71 );
73 );
72
74
73− const validate = useMemo(
75+ const validate = useMemo(() => {
74− () =>
76+ const sponsorSize =
77+ azimuth.getPointSize(point) === azimuth.PointSize.Star ? 1 : 2;
75− composeValidator(
78+ return composeValidator(
76− {
79+ {
80+ sponsor: buildPointValidator(sponsorSize, [
77− sponsor: buildPointValidator(2, [validateMinimumPatpByteLength(2)]),
81+ validateMinimumPatpByteLength(sponsorSize),
82+ ]),
78− },
83+ },
79− validateForm
84+ validateForm
80− ),
85+ );
81− [validateForm]
86+ }, [validateForm, point]);
82− );
83
87
84 const onValues = useCallback(
88 const onValues = useCallback(
85 ({ valid, values }) => {
89 ({ valid, values }) => {
@@ -141,13 +145,24 @@ function useCancelEscape() {
141function CurrentEscape({ onDone }) {
145function CurrentEscape({ onDone }) {
142 const { construct, bind } = useCancelEscape();
146 const { construct, bind } = useCancelEscape();
143
147
148+ const { pointCursor } = usePointCursor();
149+ const { getDetails } = usePointCache();
150+
151+ const point = need.point(pointCursor);
152+
153+ const details = need.details(getDetails(point));
154+
155+ const newSponsor = useMemo(() => ob.patp(details.escapeRequestedTo), [
156+ details,
157+ ]);
158+
144 useEffect(() => {
159 useEffect(() => {
145 construct();
160 construct();
146 }, [construct]);
161 }, [construct]);
147 return (
162 return (
148 <Grid>
163 <Grid>
149 <Grid.Item full as={ViewHeader}>
164 <Grid.Item full as={ViewHeader}>
150− Currently requesting <span className="mono">~dopzod</span> as a new
165+ Currently requesting <span className="mono">{newSponsor}</span> as a new
151 sponsor
166 sponsor
152 </Grid.Item>
167 </Grid.Item>
153 <Grid.Item
168 <Grid.Item
src/views/UrbitOS/Home.js+17−10
@@ -1,6 +1,7 @@
1import React, { useCallback, useState } from 'react';
1import React, { useCallback, useState } from 'react';
2import { Grid, Button, SelectInput } from 'indigo-react';
2import { Grid, Button, SelectInput } from 'indigo-react';
3import * as ob from 'urbit-ob';
3import * as ob from 'urbit-ob';
4+import { azimuth } from 'azimuth-js';
4
5
5import { usePointCursor } from 'store/pointCursor';
6import { usePointCursor } from 'store/pointCursor';
6import { usePointCache } from 'store/pointCache';
7import { usePointCache } from 'store/pointCache';
@@ -34,6 +35,8 @@ export default function UrbitOSHome() {
34 const { code, notice } = useKeyfileGenerator();
35 const { code, notice } = useKeyfileGenerator();
35
36
36 const [showKeys, setShowKeys] = useState(false);
37 const [showKeys, setShowKeys] = useState(false);
38+
39+ const showSponsor = azimuth.getPointSize(point) !== azimuth.PointSize.Galaxy;
37 const toggleShowKeys = useCallback(() => setShowKeys(!showKeys), [
40 const toggleShowKeys = useCallback(() => setShowKeys(!showKeys), [
38 setShowKeys,
41 setShowKeys,
39 showKeys,
42 showKeys,
@@ -63,16 +66,20 @@ export default function UrbitOSHome() {
63 Network
66 Network
64 </Grid.Item>
67 </Grid.Item>
65 <Grid.Divider />
68 <Grid.Divider />
69+ {showSponsor && (
70+ <>
66− <Grid.Item
71+ <Grid.Item
67− full
72+ full
68− as={ForwardButton}
73+ as={ForwardButton}
69− detail="A sponsor finds new peers in your network"
74+ detail="A sponsor finds new peers in your network"
70− accessory={<u>Change</u>}
75+ accessory={<u>Change</u>}
71− onClick={goChangeSponsor}>
76+ onClick={goChangeSponsor}>
72− <span className="mono">{sponsor}</span>
77+ <span className="mono">{sponsor}</span>
73− <span className="f7 bg-black white p1 ml2 r4">SPONSOR</span>
78+ <span className="f7 bg-black white p1 ml2 r4">SPONSOR</span>
74− </Grid.Item>
79+ </Grid.Item>
75− <Grid.Divider />
80+ <Grid.Divider />
81+ </>
82+ )}
76 <Grid.Item
83 <Grid.Item
77 full
84 full
78 as={ForwardButton}
85 as={ForwardButton}