on c19b2a8 help sign in
bridge/src/views/Admin/Reticket/ReticketVerify.js
71 lines 2.0 kB history raw
1import React, { useCallback, useMemo } from 'react';
2import { Text, Grid, CheckboxInput } from 'indigo-react';
4import { useLocalRouter } from 'lib/LocalRouter';
5import { validateExactly } from 'lib/validators';
6import { isDevelopment } from 'lib/flags';
8import BridgeForm from 'form/BridgeForm';
9import { TicketInput } from 'form/Inputs';
10import { composeValidator, buildPatqValidator } from 'form/validators';
11import SubmitButton from 'form/SubmitButton';
12import FormError from 'form/FormError';
14const STUB_VERIFY_TICKET = isDevelopment;
16export default function ReticketVerify({ newWallet }) {
17 const { push, names } = useLocalRouter();
19 const ticket = newWallet.value.wallet.ticket;
20 const validate = useMemo(
21 () =>
22 composeValidator({
23 ticket: buildPatqValidator([
24 validateExactly(ticket, 'Does not match expected master ticket.'),
25 ]),
26 }),
27 [ticket]
28 );
30 const initialValues = useMemo(
31 () => ({
32 ticket: STUB_VERIFY_TICKET ? ticket : undefined,
33 }),
34 [ticket]
35 );
37 const goExecute = useCallback(() => push(names.EXECUTE), [push, names]);
39 return (
40 <Grid className="mt4">
41 <Grid.Item full as={Text}>
42 Verify New Master Ticket
43 </Grid.Item>
44 <BridgeForm
45 validate={validate}
46 afterSubmit={goExecute}
47 initialValues={initialValues}>
48 {({ handleSubmit, values }) => (
49 <>
50 <Grid.Item
51 full
52 as={TicketInput}
53 className="mt4"
54 type={values.showTicket ? 'text' : 'password'}
55 name="ticket"
56 label="New master ticket"
57 />
59 <Grid.Item full as={CheckboxInput} name="showTicket" label="Show" />
61 <Grid.Item full as={FormError} />
63 <Grid.Item full as={SubmitButton} handleSubmit={handleSubmit}>
64 Verify & Reticket
65 </Grid.Item>
66 </>
67 )}
68 </BridgeForm>
69 </Grid>
70 );