aboutsummaryrefslogblamecommitdiffstats
path: root/ui/app/components/send/send-v2-container.js
blob: aca1a5a0a927f5129229d381cb96e21c5315cc55 (plain) (tree)
1
2
3
4
5
6
7
                                              


                                          

                                                  
 




                                     
                     
                 
              
                     
                             
                           

                              



                                              

                                  


                                                               

                                                      


                     







                                                                      
                                                       


          

                                                                          

                                                            


                    
                                                 
         
                    
                                                                           
                                                   
                                                
                                    








                                                                                        



                                                                            
                                                                                   
                                                                    
                                                                                 
                                                                                                   
                                                                           

                                                                                 
                                                                                                   
                                                                         
                                                                                       

                                                                                 
                                                                               
                                                   
                                                               

   
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')

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()),
    updateTokenExchangeRate: token => dispatch(actions.updateTokenExchangeRate(token)),
    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)),
    updateGasTotal: newTotal => dispatch(actions.updateGasTotal(newTotal)),
    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(actions.updateSendErrors(newError)),
    clearSend: () => dispatch(actions.clearSend()),
    setMaxModeTo: bool => dispatch(actions.setMaxModeTo(bool)),
  }
}