import { connect } from 'react-redux' import ethUtil from 'ethereumjs-util' import { addToAddressBook, clearSend, signTokenTx, signTx, updateTransaction, } from '../../../actions' import SendFooter from './send-footer.component' import { getGasLimit, getGasPrice, getGasTotal, getSelectedToken, getSendAmount, getSendEditingTransactionId, getSendFromObject, getSendTo, getSendToAccounts, getTokenBalance, getUnapprovedTxs, } from '../send.selectors' import { isSendFormInError, } from './send-footer.selectors' import { addressIsNew, constructTxParams, constructUpdatedTx, } from './send-footer.utils' export default connect(mapStateToProps, mapDispatchToProps)(SendFooter) function mapStateToProps (state) { return { amount: getSendAmount(state), editingTransactionId: getSendEditingTransactionId(state), from: getSendFromObject(state), gasLimit: getGasLimit(state), gasPrice: getGasPrice(state), gasTotal: getGasTotal(state), inError: isSendFormInError(state), selectedToken: getSelectedToken(state), to: getSendTo(state), toAccounts: getSendToAccounts(state), tokenBalance: getTokenBalance(state), unapprovedTxs: getUnapprovedTxs(state), } } function mapDispatchToProps (dispatch) { return { clearSend: () => dispatch(clearSend()), sign: ({ selectedToken, to, amount, from, gas, gasPrice }) => { const txParams = constructTxParams({ amount, from, gas, gasPrice, selectedToken, to, }) selectedToken ? dispatch(signTokenTx(selectedToken.address, to, amount, txParams)) : dispatch(signTx(txParams)) }, update: ({ amount, editingTransactionId, from, gas, gasPrice, selectedToken, to, unapprovedTxs, }) => { const editingTx = constructUpdatedTx({ amount, editingTransactionId, from, gas, gasPrice, selectedToken, to, unapprovedTxs, }) return dispatch(updateTransaction(editingTx)) }, addToAddressBookIfNew: (newAddress, toAccounts, nickname = '') => { const hexPrefixedAddress = ethUtil.addHexPrefix(newAddress) if (addressIsNew(toAccounts)) { // TODO: nickname, i.e. addToAddressBook(recipient, nickname) dispatch(addToAddressBook(hexPrefixedAddress, nickname)) } }, } }