|
|
|
const Component = require('react').Component
|
|
|
|
const PropTypes = require('prop-types')
|
|
|
|
const h = require('react-hyperscript')
|
|
|
|
const inherits = require('util').inherits
|
|
|
|
const connect = require('react-redux').connect
|
|
|
|
const actions = require('../../actions')
|
|
|
|
const genAccountLink = require('etherscan-link').createAccountLink
|
|
|
|
const copyToClipboard = require('copy-to-clipboard')
|
|
|
|
const { Menu, Item, CloseArea } = require('./components/menu')
|
|
|
|
|
|
|
|
TokenMenuDropdown.contextTypes = {
|
|
|
|
t: PropTypes.func,
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = connect(mapStateToProps, mapDispatchToProps)(TokenMenuDropdown)
|
|
|
|
|
|
|
|
function mapStateToProps (state) {
|
|
|
|
return {
|
|
|
|
network: state.metamask.network,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function mapDispatchToProps (dispatch) {
|
|
|
|
return {
|
|
|
|
showHideTokenConfirmationModal: (token) => {
|
|
|
|
dispatch(actions.showModal({ name: 'HIDE_TOKEN_CONFIRMATION', token }))
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
inherits(TokenMenuDropdown, Component)
|
|
|
|
function TokenMenuDropdown () {
|
|
|
|
Component.call(this)
|
|
|
|
|
|
|
|
this.onClose = this.onClose.bind(this)
|
|
|
|
}
|
|
|
|
|
|
|
|
TokenMenuDropdown.prototype.onClose = function (e) {
|
|
|
|
e.stopPropagation()
|
|
|
|
this.props.onClose()
|
|
|
|
}
|
|
|
|
|
|
|
|
TokenMenuDropdown.prototype.render = function () {
|
|
|
|
const { showHideTokenConfirmationModal } = this.props
|
|
|
|
|
|
|
|
return h(Menu, { className: 'token-menu-dropdown', isShowing: true }, [
|
|
|
|
h(CloseArea, {
|
|
|
|
onClick: this.onClose,
|
|
|
|
}),
|
|
|
|
h(Item, {
|
|
|
|
onClick: (e) => {
|
|
|
|
e.stopPropagation()
|
|
|
|
showHideTokenConfirmationModal(this.props.token)
|
|
|
|
this.props.onClose()
|
|
|
|
},
|
|
|
|
text: this.context.t('hideToken'),
|
|
|
|
}),
|
|
|
|
h(Item, {
|
|
|
|
onClick: (e) => {
|
|
|
|
e.stopPropagation()
|
|
|
|
copyToClipboard(this.props.token.address)
|
|
|
|
this.props.onClose()
|
|
|
|
},
|
|
|
|
text: this.context.t('copyContractAddress'),
|
|
|
|
}),
|
|
|
|
h(Item, {
|
|
|
|
onClick: (e) => {
|
|
|
|
e.stopPropagation()
|
|
|
|
const url = genAccountLink(this.props.token.address, this.props.network)
|
|
|
|
global.platform.openWindow({ url })
|
|
|
|
this.props.onClose()
|
|
|
|
},
|
|
|
|
text: this.context.t('viewOnEtherscan'),
|
|
|
|
}),
|
|
|
|
])
|
|
|
|
}
|