Newer
Older
// Copyright 2015-2018 Parity Technologies (UK) Ltd.
// This file is part of Parity.
//
// SPDX-License-Identifier: BSD-3-Clause
import React, { Component } from 'react';
import { Field, Form } from 'react-final-form';
import { Form as FetherForm, Header } from 'fether-ui';
import { inject, observer } from 'mobx-react';
import { Link } from 'react-router-dom';
import { withProps } from 'recompose';
Luke Schoen
committed
import RequireHealthOverlay from '../../RequireHealthOverlay';
import TokenAddress from '../../Tokens/TokensList/TokenAddress';
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import withAccount from '../../utils/withAccount';
import withBalance, { withEthBalance } from '../../utils/withBalance';
import withTokens from '../../utils/withTokens';
@inject('parityStore', 'sendStore')
@withTokens
@withProps(({ match: { params: { tokenAddress } }, tokens }) => ({
token: tokens[tokenAddress]
}))
@withAccount
@withBalance // Balance of current token (can be ETH)
@withEthBalance // ETH balance
@observer
class SignedTxSummary extends Component {
handleSubmit = values => {
const {
account: { address },
history,
sendStore,
token
} = this.props;
return sendStore
.sendRaw()
.then(() => history.push(`/send/${token.address}/from/${address}/sent`))
.catch(error => ({
password: error.text
}));
};
render () {
const {
account: { address },
sendStore: { tx },
token
} = this.props;
return (
<div>
<Header
left={
<Link to={`/tokens/${address}`} className='icon -back'>
Close
</Link>
}
title={token && <h1>Send {token.name}</h1>}
/>
Luke Schoen
committed
<RequireHealthOverlay require='sync'>
<div className='window_content'>
<div className='box -padded'>
<TokenAddress
copyAddress
drawers={[
<Form
key='txForm'
initialValues={{
from: address,
to: tx.to,
Luke Schoen
committed
amount: `${tx.amount} ${token.symbol}`,
...tx
}}
onSubmit={this.handleSubmit}
render={({ handleSubmit, values }) => (
<form className='send-form' onSubmit={handleSubmit}>
<fieldset className='form_fields'>
<Field
as='textarea'
Luke Schoen
committed
className='form_field_value'
label='To'
name='to'
render={FetherForm.Field}
/>
<Field
Luke Schoen
committed
className='form_field_value'
label='Amount'
name='amount'
render={FetherForm.Field}
/>
{values.to === values.from && (
<span>
<h3>WARNING:</h3>
<p>
The sender and receiver addresses are the same.
</p>
</span>
)}
</fieldset>
<nav className='form-nav'>
<button className='button'>Send</button>
</nav>
</form>
)}
/>
]}
shortAddress={false}
Luke Schoen
committed
</RequireHealthOverlay>
</div>
);
}
}
export default SignedTxSummary;