on master help sign in
Touch up Senate code & UI
commitdef5e447f860ff2006cf3d85b3ceadf05b6314e9 authorFang <git@fang.io> dateMon 9 Dec 2019, 20:17 (7 years ago) parentb3be148
1 file changed+51−40
src/views/Senate.js+51−40
src/views/Senate.js+51−40
@@ -75,11 +75,11 @@ export default function Senate() {
7575 } = useCastDocumentVote();
7676
7777 const [documentHash, setDocumentHash] = useState('0x...');
78− const [majorities, setMajorities] = useState([]); //TODO gh.com/proposals/doc.txt
78+ const [majorities, setMajorities] = useState([]);
7979 const [proposals, setProposals] = useState([]);
8080 const [polls, setPolls] = useState({});
8181 const [loading, setLoading] = useState(true);
82− const [votingOn, setVotingOn] = useState(null);
82+ const [votingOn, setVotingOn] = useState({});
8383
8484 //TODO update every second?
8585 const now = Math.round(new Date().getTime() / 1000);
@@ -90,7 +90,6 @@ export default function Senate() {
9090 let polls = {};
9191 for (let doc of proposals) {
9292 let poll = await azimuth.polls.getDocumentPoll(_contracts, doc);
93− console.log('got poll', doc, poll);
9493 poll.endTime = polls.start + poll.duration;
9594 poll.hasVoted = await azimuth.polls.hasVotedOnDocumentPoll(
9695 _contracts,
@@ -101,7 +100,6 @@ export default function Senate() {
101100 }
102101 setMajorities(majorities);
103102 setProposals(proposals);
104− console.log('setting polls', polls);
105103 setPolls(polls);
106104 setLoading(false);
107105 return;
@@ -111,8 +109,6 @@ export default function Senate() {
111109 let open = [];
112110 let closed = [];
113111 if (loading) return [open, closed];
114− console.log('proposals', proposals);
115− console.log('polls', polls);
116112 for (let doc of proposals) {
117113 if (now > polls[doc].endTime) {
118114 closed.push(doc);
@@ -126,7 +122,7 @@ export default function Senate() {
126122 const doVote = useCallback(
127123 (hash, accept) => {
128124 construct(hash, accept);
129− setVotingOn(hash);
125+ setVotingOn({ hash, accept });
130126 },
131127 [construct, setVotingOn]
132128 );
@@ -134,19 +130,20 @@ export default function Senate() {
134130 const didVote = useCallback(() => {
135131 polls[votingOn].hasVoted = true;
136132 setPolls(polls);
133+ setVotingOn({});
137134 }, [polls, setPolls, votingOn]);
138135
139136 const majorityList = useMemo(() => {
140137 return majorities.map(doc => {
141138 return (
142− <Text>
139+ <Grid.Item full as={Text}>
143140 <a
144141 target="_blank"
145142 rel="noopener noreferrer"
146143 href={`https://github.com/urbit/azimuth/blob/master/proposals/${doc}.txt`}>
147− <code>{doc}</code>
144+ <code>{doc}</code>↗
148145 </a>
149− </Text>
146+ </Grid.Item>
150147 );
151148 });
152149 }, [majorities]);
@@ -165,10 +162,20 @@ export default function Senate() {
165162 'Your vote has been cast.'
166163 ) : (
167164 <>
168− <LinkButton onClick={() => doVote(doc, true)}>aye</LinkButton>
165+ <LinkButton onClick={() => doVote(doc, true)}>
166+ {votingOn.hash === doc && votingOn.accept ? (
167+ <b>support</b>
168+ ) : (
169+ <>support</>
170+ )}
171+ </LinkButton>
169172 {' / '}
170173 <LinkButton onClick={() => doVote(doc, false)}>
171− nay
174+ {votingOn.hash === doc && !votingOn.accept ? (
175+ <b>reject</b>
176+ ) : (
177+ <>reject</>
178+ )}
172179 </LinkButton>
173180 </>
174181 )}
@@ -178,7 +185,7 @@ export default function Senate() {
178185 </>
179186 );
180187 });
181− }, [open, polls]);
188+ }, [open, polls, votingOn]);
182189
183190 const onDocumentChange = useCallback(({ valid, values }) => {
184191 if (values.document) {
@@ -196,43 +203,47 @@ export default function Senate() {
196203 Senate: Document Proposals
197204 </Grid.Item>
198205
199− <Grid.Item full as={P}>
200− Accepted documents:
206+ <Grid.Item full as={Grid}>
207+ <Grid.Item full as={P}>
208+ Accepted documents:
209+ </Grid.Item>
201210 {majorityList}
202211 </Grid.Item>
203212
204− <Grid>
213+ <Grid.Divider />
214+
215+ <Grid.Item full as={Grid}>
205216 <Grid.Item full as={P}>
206217 Open document polls:
207218 </Grid.Item>
208219 {openList}
209− </Grid>
220+ </Grid.Item>
210221
211222 <BridgeForm onValues={onDocumentChange}>
212223 {({ onSubmit, values }) => (
213− <>
214− <Grid.Item
215− full
216− as={InlineEthereumTransaction}
217− {...bind}
218− onReturn={didVote}
219− />
220−
221− <Grid.Divider />
222−
223− <Grid.Item
224− full
225− as={Input}
226− type="textarea"
227− placeholder="Input some text to find its hash..."
228− name="document"
229− className="mt4"
230− />
231−
232− <Grid.Item full as={CopiableAddress}>
233− {documentHash}
234− </Grid.Item>
235− </>
224+ // <>
225+ <Grid.Item
226+ full
227+ as={InlineEthereumTransaction}
228+ {...bind}
229+ onReturn={didVote}
230+ />
231+
232+ // <Grid.Divider />
233+ //
234+ // <Grid.Item
235+ // full
236+ // as={Input}
237+ // type="textarea"
238+ // placeholder="Input some text to find its hash..."
239+ // name="document"
240+ // className="mt4"
241+ // />
242+ //
243+ // <Grid.Item full as={CopiableAddress}>
244+ // {documentHash}
245+ // </Grid.Item>
246+ // </>
236247 )}
237248 </BridgeForm>
238249 </Grid>