1 import React, { Component } from 'react'
2 import {reduxForm} from 'redux-form'
7 } from 'features/shared/components'
8 import { btmID } from 'utility/environment'
9 import { sum } from 'utility/math'
10 import { normalizeBTMAmountUnit, converIntToDec } from 'utility/buildInOutDisplay'
11 import styles from './ConfirmModal.scss'
12 import { Link } from 'react-router'
13 import {withNamespaces} from 'react-i18next'
16 class ConfirmModal extends Component {
23 fields: { accountId, accountAlias, assetId, assetAlias, receivers, password, gasLevel },
34 const fee = Number(gasLevel.value * gas)
36 const totalAmount = sum(receivers, 'amount.value')
38 const Total = (assetAlias.value ==='BTM' ||assetId.value === btmID)?
39 (totalAmount + fee): totalAmount
41 let submitLabel = t('transaction.new.submit')
43 const normalize = (value, asset) => {
44 if (asset === btmID || asset === 'BTM'){
45 return normalizeBTMAmountUnit(btmID, value, btmAmountUnit)
46 }else if( assetDecimal ){
47 return converIntToDec(value, assetDecimal)
53 const findAssetById = assetId.value && this.props.asset.find(i => i.id === assetId.value)
54 const findAssetByAlias = assetAlias.value && this.props.asset.find(i => i.alias === assetAlias.value)
56 const asset = assetAlias.value || ( findAssetById && findAssetById.alias ) || assetId.value
57 const assetIdLink = assetId.value || ( findAssetByAlias && findAssetByAlias.id )
59 const unit = <Link to={`/assets/${assetIdLink}`} className={styles.unit} target='_blank'>
60 {(asset !== btmID && asset !== 'BTM') && asset}
65 <h3>{ t('transaction.normal.confirmation') }</h3>
66 <table className={styles.table}>
69 <td className={styles.colLabel}>From</td>
70 <td> <span>{accountAlias.value || accountId.value}</span></td>
77 {receivers.map((receiver) =>
79 <td className={styles.colLabel}>To</td>
80 <td> <span>{receiver.address.value}</span> </td>
83 <td className={styles.colLabel}>{t('form.amount')}</td>
84 <td> <code>{normalize(receiver.amount.value, asset)} {unit}</code> </td>
92 <td className={styles.colLabel}>{t('form.fee')}</td>
93 <td> <code>{normalizeBTMAmountUnit(btmID, fee, btmAmountUnit)}</code> </td>
97 <td className={styles.colLabel}>{t('transaction.normal.total')}</td>
98 <td> <code>{normalize(Total, asset)} {unit}</code> </td>
103 <hr className={styles.hr}/>
105 <form onSubmit={handleSubmit}>
107 <label>{t('key.password')}</label>
109 placeholder={t('key.passwordPlaceholder')}
110 fieldProps={password}
114 {error && error.message === 'PasswordWrong' &&
116 title={t('form.errorTitle')}
117 error={t('errorMessage.password')} />}
119 <div className={styles.btnGroup}>
121 <button type='submit' className='btn btn-primary'
122 disabled={submitting}>
127 <SubmitIndicator className={styles.submitIndicator} />
130 <button type='button' className='btn btn-default' onClick={cancel}>
131 <i/> {t('form.cancel')}
141 const validate = values => {
143 if (!values.password) {
144 errors.password = 'Required'
149 export default withNamespaces('translations') (reduxForm({
150 form: 'NormalTransactionForm',
156 'receivers[].amount',
157 'receivers[].address',
161 destroyOnUnmount: false,