You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.5 KiB
94 lines
3.5 KiB
const connect = require('react-redux').connect
|
|
const actions = require('../../actions')
|
|
const abi = require('ethereumjs-abi')
|
|
const SendEther = require('../../send-v2')
|
|
const { withRouter } = require('react-router-dom')
|
|
const { compose } = require('recompose')
|
|
|
|
const {
|
|
accountsWithSendEtherInfoSelector,
|
|
getCurrentAccountWithSendEtherInfo,
|
|
conversionRateSelector,
|
|
getSelectedToken,
|
|
getSelectedAddress,
|
|
getAddressBook,
|
|
getSendFrom,
|
|
getCurrentCurrency,
|
|
getSelectedTokenToFiatRate,
|
|
getSelectedTokenContract,
|
|
} = require('../../selectors')
|
|
|
|
import {
|
|
updateSendErrors,
|
|
} from '../../ducks/send'
|
|
|
|
module.exports = compose(
|
|
withRouter,
|
|
connect(mapStateToProps, mapDispatchToProps)
|
|
)(SendEther)
|
|
|
|
function mapStateToProps (state) {
|
|
const fromAccounts = accountsWithSendEtherInfoSelector(state)
|
|
const selectedAddress = getSelectedAddress(state)
|
|
const selectedToken = getSelectedToken(state)
|
|
const conversionRate = conversionRateSelector(state)
|
|
|
|
let data
|
|
let primaryCurrency
|
|
let tokenToFiatRate
|
|
if (selectedToken) {
|
|
data = Array.prototype.map.call(
|
|
abi.rawEncode(['address', 'uint256'], [selectedAddress, '0x0']),
|
|
x => ('00' + x.toString(16)).slice(-2)
|
|
).join('')
|
|
|
|
primaryCurrency = selectedToken.symbol
|
|
|
|
tokenToFiatRate = getSelectedTokenToFiatRate(state)
|
|
}
|
|
|
|
return {
|
|
...state.metamask.send,
|
|
from: getSendFrom(state) || getCurrentAccountWithSendEtherInfo(state),
|
|
fromAccounts,
|
|
toAccounts: [...fromAccounts, ...getAddressBook(state)],
|
|
conversionRate,
|
|
selectedToken,
|
|
primaryCurrency,
|
|
convertedCurrency: getCurrentCurrency(state),
|
|
data,
|
|
selectedAddress,
|
|
amountConversionRate: selectedToken ? tokenToFiatRate : conversionRate,
|
|
tokenContract: getSelectedTokenContract(state),
|
|
unapprovedTxs: state.metamask.unapprovedTxs,
|
|
network: state.metamask.network,
|
|
}
|
|
}
|
|
|
|
function mapDispatchToProps (dispatch) {
|
|
return {
|
|
showCustomizeGasModal: () => dispatch(actions.showModal({ name: 'CUSTOMIZE_GAS' })),
|
|
estimateGas: params => dispatch(actions.estimateGas(params)),
|
|
getGasPrice: () => dispatch(actions.getGasPrice()),
|
|
signTokenTx: (tokenAddress, toAddress, amount, txData) => (
|
|
dispatch(actions.signTokenTx(tokenAddress, toAddress, amount, txData))
|
|
),
|
|
signTx: txParams => dispatch(actions.signTx(txParams)),
|
|
updateAndApproveTx: txParams => dispatch(actions.updateAndApproveTx(txParams)),
|
|
updateTx: txData => dispatch(actions.updateTransaction(txData)),
|
|
setSelectedAddress: address => dispatch(actions.setSelectedAddress(address)),
|
|
addToAddressBook: (address, nickname) => dispatch(actions.addToAddressBook(address, nickname)),
|
|
setGasTotal: newTotal => dispatch(actions.setGasTotal(newTotal)),
|
|
updateGasTotal: () => dispatch(actions.updateGasTotal()),
|
|
updateGasPrice: newGasPrice => dispatch(actions.updateGasPrice(newGasPrice)),
|
|
updateGasLimit: newGasLimit => dispatch(actions.updateGasLimit(newGasLimit)),
|
|
updateSendTokenBalance: tokenBalance => dispatch(actions.updateSendTokenBalance(tokenBalance)),
|
|
updateSendFrom: newFrom => dispatch(actions.updateSendFrom(newFrom)),
|
|
updateSendTo: (newTo, nickname) => dispatch(actions.updateSendTo(newTo, nickname)),
|
|
updateSendAmount: newAmount => dispatch(actions.updateSendAmount(newAmount)),
|
|
updateSendMemo: newMemo => dispatch(actions.updateSendMemo(newMemo)),
|
|
updateSendErrors: newError => dispatch(updateSendErrors(newError)),
|
|
clearSend: () => dispatch(actions.clearSend()),
|
|
setMaxModeTo: bool => dispatch(actions.setMaxModeTo(bool)),
|
|
}
|
|
}
|
|
|