mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-26 12:29:06 +01:00
Enhance global modal to handle Buy, Edit, and Details Modals
This commit is contained in:
parent
4e9376ca71
commit
71b2dd290b
@ -189,7 +189,7 @@ class AccountDropdowns extends Component {
|
||||
{
|
||||
closeMenu: () => {},
|
||||
onClick: () => {
|
||||
this.props.showAccountDetail()
|
||||
this.props.actions.showAccountDetailModal()
|
||||
},
|
||||
style: Object.assign(
|
||||
{},
|
||||
@ -348,6 +348,9 @@ const mapDispatchToProps = (dispatch) => {
|
||||
showConfigPage: () => dispatch(actions.showConfigPage()),
|
||||
requestAccountExport: () => dispatch(actions.requestExportAccount()),
|
||||
showAccountDetail: (address) => dispatch(actions.showAccountDetail(address)),
|
||||
showAccountDetailModal: () => {
|
||||
dispatch(actions.showModal({ name: 'ACCOUNT_DETAILS' }))
|
||||
},
|
||||
addNewAccount: () => dispatch(actions.addNewAccount()),
|
||||
showImportPage: () => dispatch(actions.showImportPage()),
|
||||
showQrView: (selected, identity) => dispatch(actions.showQrView(selected, identity)),
|
||||
|
73
ui/app/components/modals/account-details-modal.js
Normal file
73
ui/app/components/modals/account-details-modal.js
Normal file
@ -0,0 +1,73 @@
|
||||
const Component = require('react').Component
|
||||
const h = require('react-hyperscript')
|
||||
const inherits = require('util').inherits
|
||||
const connect = require('react-redux').connect
|
||||
const actions = require('../../actions')
|
||||
|
||||
function mapStateToProps (state) {
|
||||
return {
|
||||
address: state.metamask.selectedAddress,
|
||||
}
|
||||
}
|
||||
|
||||
function mapDispatchToProps (dispatch) {
|
||||
return {
|
||||
hideModal: () => {
|
||||
dispatch(actions.hideModal())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inherits(AccountDetailsModal, Component)
|
||||
function AccountDetailsModal () {
|
||||
Component.call(this)
|
||||
}
|
||||
|
||||
module.exports = connect(mapStateToProps, mapDispatchToProps)(AccountDetailsModal)
|
||||
|
||||
// AccountDetailsModal is currently meant to be rendered inside <Modal />
|
||||
// It is the only component in this codebase that does so
|
||||
// It utilizes modal styles
|
||||
AccountDetailsModal.prototype.render = function () {
|
||||
return h('div', {}, [
|
||||
h('div.modal-content.transfers-subview', {
|
||||
}, [
|
||||
h('div.modal-content-title-wrapper.flex-column.flex-center', {
|
||||
style: {},
|
||||
}, [
|
||||
h('div.modal-content-title', {
|
||||
style: {},
|
||||
}, 'Account Details Modal'),
|
||||
h('div', {}, 'How would you like to buy Ether?'),
|
||||
]),
|
||||
|
||||
h('div.modal-content-options.flex-column.flex-center', {}, [
|
||||
|
||||
h('div.modal-content-option', {
|
||||
onClick: () => {},
|
||||
}, [
|
||||
h('div.modal-content-option-title', {}, 'Coinbase'),
|
||||
h('div.modal-content-option-subtitle', {}, 'Buy with Fiat'),
|
||||
]),
|
||||
|
||||
h('div.modal-content-option', {}, [
|
||||
h('div.modal-content-option-title', {}, 'Shapeshift'),
|
||||
h('div.modal-content-option-subtitle', {}, 'Trade any digital asset for any other'),
|
||||
]),
|
||||
|
||||
h('div.modal-content-option', {}, [
|
||||
h('div.modal-content-option-title', {}, 'Direct Deposit'),
|
||||
h('div.modal-content-option-subtitle', {}, 'Deposit from another account'),
|
||||
]),
|
||||
|
||||
]),
|
||||
|
||||
h('button', {
|
||||
style: {
|
||||
background: 'white',
|
||||
},
|
||||
onClick: () => { this.props.hideModal() },
|
||||
}, h('div.modal-content-footer#modal-content-footer-text',{}, 'Cancel')),
|
||||
])
|
||||
])
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
const Component = require('react').Component
|
||||
const h = require('react-hyperscript')
|
||||
const inherits = require('util').inherits
|
||||
const BuyOptions = require('../buy-options')
|
||||
const Modal = require('./modal.js')
|
||||
|
||||
inherits(BuyModal, Component)
|
||||
function BuyModal () {
|
||||
Component.call(this)
|
||||
}
|
||||
|
||||
module.exports = BuyModal
|
||||
|
||||
BuyModal.prototype.render = function () {
|
||||
return h(Modal, {
|
||||
ref: "modalRef",
|
||||
}, [
|
||||
h(BuyOptions, {}, []),
|
||||
])
|
||||
|
||||
}
|
||||
|
||||
// TODO: specify default props and proptypes
|
||||
|
||||
// Generalize to multiple modals:
|
||||
// Modal API:
|
||||
// - props {
|
||||
// key: ['BUY', 'EDIT_ACCOUNT_NAME', 'ACCOUNT_DETAILS']
|
||||
// }
|
||||
// - These props will be passed as 'active'
|
||||
// mapStateToProps(state, ownProps) {
|
||||
// active: state.appState.modal[key]
|
||||
// }
|
||||
// - Modal accepts:
|
||||
// - mobileModalStyles, for mobile viewports
|
||||
// - laptopModalStyles, for laptop viewports
|
||||
// - backdropStyles
|
||||
// - Do not set defaults, they are unneeded here
|
||||
//
|
||||
// If multiple-step modals are needed:
|
||||
// - pass a component with internal state that tracks buy steps
|
||||
// - steps could technically be in redux
|
||||
// - it renders and does not trigger open/close actions until done
|
@ -2,7 +2,7 @@ const Component = require('react').Component
|
||||
const h = require('react-hyperscript')
|
||||
const inherits = require('util').inherits
|
||||
const connect = require('react-redux').connect
|
||||
const actions = require('../actions')
|
||||
const actions = require('../../actions')
|
||||
|
||||
function mapStateToProps (state) {
|
||||
return {
|
80
ui/app/components/modals/edit-account-name-modal.js
Normal file
80
ui/app/components/modals/edit-account-name-modal.js
Normal file
@ -0,0 +1,80 @@
|
||||
const Component = require('react').Component
|
||||
const h = require('react-hyperscript')
|
||||
const inherits = require('util').inherits
|
||||
const connect = require('react-redux').connect
|
||||
const actions = require('../../actions')
|
||||
|
||||
function mapStateToProps (state) {
|
||||
return {
|
||||
network: state.metamask.network,
|
||||
address: state.metamask.selectedAddress,
|
||||
}
|
||||
}
|
||||
|
||||
function mapDispatchToProps (dispatch) {
|
||||
return {
|
||||
toCoinbase: (address) => {
|
||||
dispatch(actions.buyEth({ network: '1', address, amount: 0 }))
|
||||
},
|
||||
hideModal: () => {
|
||||
dispatch(actions.hideModal())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inherits(BuyOptions, Component)
|
||||
function BuyOptions () {
|
||||
Component.call(this)
|
||||
}
|
||||
|
||||
module.exports = connect(mapStateToProps, mapDispatchToProps)(BuyOptions)
|
||||
|
||||
// BuyOptions is currently meant to be rendered inside <Modal />
|
||||
// It is the only component in this codebase that does so
|
||||
// It utilizes modal styles
|
||||
BuyOptions.prototype.render = function () {
|
||||
return h('div', {}, [
|
||||
h('div.modal-content.transfers-subview', {
|
||||
}, [
|
||||
h('div.modal-content-title-wrapper.flex-column.flex-center', {
|
||||
style: {},
|
||||
}, [
|
||||
h('div.modal-content-title', {
|
||||
style: {},
|
||||
}, 'Edit Account Name Modal'),
|
||||
h('div', {}, 'How would you like to buy Ether?'),
|
||||
]),
|
||||
|
||||
h('div.modal-content-options.flex-column.flex-center', {}, [
|
||||
|
||||
h('div.modal-content-option', {
|
||||
onClick: () => {
|
||||
const { toCoinbase, address } = this.props
|
||||
toCoinbase(address)
|
||||
},
|
||||
}, [
|
||||
h('div.modal-content-option-title', {}, 'Coinbase'),
|
||||
h('div.modal-content-option-subtitle', {}, 'Buy with Fiat'),
|
||||
]),
|
||||
|
||||
h('div.modal-content-option', {}, [
|
||||
h('div.modal-content-option-title', {}, 'Shapeshift'),
|
||||
h('div.modal-content-option-subtitle', {}, 'Trade any digital asset for any other'),
|
||||
]),
|
||||
|
||||
h('div.modal-content-option', {}, [
|
||||
h('div.modal-content-option-title', {}, 'Direct Deposit'),
|
||||
h('div.modal-content-option-subtitle', {}, 'Deposit from another account'),
|
||||
]),
|
||||
|
||||
]),
|
||||
|
||||
h('button', {
|
||||
style: {
|
||||
background: 'white',
|
||||
},
|
||||
onClick: () => { this.props.hideModal() },
|
||||
}, h('div.modal-content-footer#modal-content-footer-text',{}, 'Cancel')),
|
||||
])
|
||||
])
|
||||
}
|
@ -1,9 +1,5 @@
|
||||
const Modal = require('./modal')
|
||||
const BuyModal = require('./buy-modal')
|
||||
// const h = require('account-options')
|
||||
// const h = require('account-details')
|
||||
|
||||
module.exports = {
|
||||
Modal,
|
||||
BuyModal,
|
||||
}
|
@ -6,14 +6,22 @@ const FadeModal = require('boron').FadeModal
|
||||
const actions = require('../../actions')
|
||||
const isMobileView = require('../../../lib/is-mobile-view')
|
||||
const isPopupOrNotification = require('../../../../app/scripts/lib/is-popup-or-notification')
|
||||
const BuyOptions = require('../buy-options')
|
||||
|
||||
// Modal Components
|
||||
const BuyOptions = require('./buy-options-modal')
|
||||
const AccountDetailsModal = require('./account-details-modal')
|
||||
const EditAccountNameModal = require('./edit-account-name-modal')
|
||||
|
||||
const MODALS = {
|
||||
BUY: [
|
||||
h(BuyOptions, {}, []),
|
||||
],
|
||||
EDIT_ACCOUNT_NAME: [],
|
||||
ACCOUNT_DETAILS: [],
|
||||
EDIT_ACCOUNT_NAME: [
|
||||
h(AccountDetailsModal, {}, []),
|
||||
],
|
||||
ACCOUNT_DETAILS: [
|
||||
h(EditAccountNameModal, {}, []),
|
||||
],
|
||||
}
|
||||
|
||||
function mapStateToProps (state) {
|
||||
|
Loading…
Reference in New Issue
Block a user