@@ -3,7 +3,13 @@ import { Just } from 'folktale/maybe';
3import cn from 'classnames';
3import cn from 'classnames';
4import * as azimuth from 'azimuth-js';
4import * as azimuth from 'azimuth-js';
5import * as kg from 'urbit-key-generation';
5import * as kg from 'urbit-key-generation';
6−import { Grid, CheckboxInput, Flex, ToggleInput } from 'indigo-react';
12+} from 'indigo-react';
7import { FORM_ERROR } from 'final-form';
13import { FORM_ERROR } from 'final-form';
9import { useNetwork } from 'store/network';
15import { useNetwork } from 'store/network';
@@ -31,6 +37,56 @@ import FormError from 'form/FormError';
31import SubmitButton from 'form/SubmitButton';
37import SubmitButton from 'form/SubmitButton';
32import { WARNING } from 'form/helpers';
38import { WARNING } from 'form/helpers';
40+import { ReactComponent as SecretShowIcon } from 'assets/secret-show.svg';
41+import { ReactComponent as SecretHideIcon } from 'assets/secret-hidden.svg';
43+function AdvancedOptions() {
45+ <Flex.Item as={Flex}>
46+ <Condition when="useAdvanced" is={true}>
54+ style={{ boxSizing: 'border-box' }}
63+ style={{ boxSizing: 'border-box' }}
77+function TicketInputAccessory({ name }) {
83+ inverseLabel={<SecretHideIcon />}
84+ label={<SecretShowIcon />}
34export default function Ticket({ className, goHome }) {
90export default function Ticket({ className, goHome }) {
35 useLoginView(WALLET_TYPES.TICKET);
91 useLoginView(WALLET_TYPES.TICKET);
@@ -124,7 +180,7 @@ export default function Ticket({ className, goHome }) {
124 shard1: buildPatqValidator(),
180 shard1: buildPatqValidator(),
125 shard2: buildPatqValidator(),
181 shard2: buildPatqValidator(),
126 shard3: buildPatqValidator(),
182 shard3: buildPatqValidator(),
127− showTicket: buildCheckboxValidator(),
183+ ticketHidden: buildCheckboxValidator(),
128 passphrase: buildPassphraseValidator(),
184 passphrase: buildPassphraseValidator(),
130 validateForm
186 validateForm
@@ -137,14 +193,14 @@ export default function Ticket({ className, goHome }) {
137 point: impliedPoint || '',
193 point: impliedPoint || '',
138 usePasshrase: false,
194 usePasshrase: false,
139 useShards: false,
195 useShards: false,
140− showTicket: true,
196+ ticketHidden: false,
141 useAdvanced: false,
197 useAdvanced: false,
143 [impliedPoint]
199 [impliedPoint]
147− <Grid className={cn('mt4', className)}>
203+ <Grid className={className}>
148 <BridgeForm
204 <BridgeForm
149 validate={validate}
205 validate={validate}
150 onSubmit={onSubmit}
206 onSubmit={onSubmit}
@@ -158,7 +214,10 @@ export default function Ticket({ className, goHome }) {
158 <Grid.Item
214 <Grid.Item
160 as={TicketInput}
216 as={TicketInput}
161− type={values.showTicket ? 'text' : 'password'}
217+ hidden={values.ticketHidden}
218+ labelAccessory={<AdvancedOptions />}
219+ accessory={<TicketInputAccessory name="ticketHidden" />}
162 name="ticket"
221 name="ticket"
163 label="Master Ticket"
222 label="Master Ticket"
@@ -168,32 +227,38 @@ export default function Ticket({ className, goHome }) {
168 <Grid.Item
227 <Grid.Item
170 as={TicketInput}
229 as={TicketInput}
171− type={values.showTicket ? 'text' : 'password'}
230+ accessory={<TicketInputAccessory name="ticketHidden" />}
231+ hidden={values.ticketHidden}
232+ labelAccessory={<AdvancedOptions />}
172 name="shard1"
234 name="shard1"
173 label="Shard 1"
235 label="Shard 1"
175 <Grid.Item
237 <Grid.Item
177 as={TicketInput}
239 as={TicketInput}
178− type={values.showTicket ? 'text' : 'password'}
240+ accessory={<TicketInputAccessory name="ticketHidden" />}
241+ hidden={values.ticketHidden}
179 name="shard2"
243 name="shard2"
180 label="Shard 2"
244 label="Shard 2"
182 <Grid.Item
246 <Grid.Item
184 as={TicketInput}
248 as={TicketInput}
185− type={values.showTicket ? 'text' : 'password'}
249+ className="mt3"
250+ accessory={<TicketInputAccessory name="ticketHidden" />}
251+ hidden={values.ticketHidden}
186 name="shard3"
252 name="shard3"
187 label="Shard 3"
253 label="Shard 3"
189 </Condition>
255 </Condition>
191− <Grid.Item full as={CheckboxInput} name="showTicket" label="Show" />
193 <Condition when="usePassphrase" is={true}>
257 <Condition when="usePassphrase" is={true}>
194 <Grid.Item
258 <Grid.Item
196 as={PassphraseInput}
260 as={PassphraseInput}
197 name="passphrase"
262 name="passphrase"
198 label="Wallet Passphrase"
263 label="Wallet Passphrase"
@@ -201,7 +266,11 @@ export default function Ticket({ className, goHome }) {
202 <Grid.Item full as={FormError} />
267 <Grid.Item full as={FormError} />
204− <Grid.Item full as={SubmitButton} handleSubmit={handleSubmit}>
273+ handleSubmit={handleSubmit}>
205 {isWarning =>
274 {isWarning =>
206 submitting
275 submitting
207 ? 'Logging in...'
276 ? 'Logging in...'
@@ -210,29 +279,6 @@ export default function Ticket({ className, goHome }) {
210 : 'Continue'
279 : 'Continue'
212 </Grid.Item>
281 </Grid.Item>
214− <Grid.Item full as={Flex} justify="between">
221− <Condition when="useAdvanced" is={true}>
222− <Flex.Item as={Flex}>
225− name="usePassphrase"
238 </BridgeForm>
284 </BridgeForm>