aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/account-detail.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/account-detail.js')
-rw-r--r--ui/app/account-detail.js106
1 files changed, 40 insertions, 66 deletions
diff --git a/ui/app/account-detail.js b/ui/app/account-detail.js
index a876b275f..208ecc63a 100644
--- a/ui/app/account-detail.js
+++ b/ui/app/account-detail.js
@@ -1,11 +1,15 @@
const inherits = require('util').inherits
+const extend = require('xtend')
const Component = require('react').Component
const h = require('react-hyperscript')
const connect = require('react-redux').connect
const copyToClipboard = require('copy-to-clipboard')
const actions = require('./actions')
+const ReactCSSTransitionGroup = require('react-addons-css-transition-group')
+
const AccountPanel = require('./components/account-panel')
const transactionList = require('./components/transaction-list')
+const ExportAccountView = require('./components/account-export')
module.exports = connect(mapStateToProps)(AccountDetailScreen)
@@ -78,12 +82,13 @@ AccountDetailScreen.prototype.render = function() {
}, 'EXPORT'),
]),
- transactionList(transactions
- .filter(tx => tx.txParams.from === state.address)
- .filter(tx => tx.txParams.metamaskNetworkId === state.networkVersion)
- .sort((a, b) => b.time - a.time), state.networkVersion),
- this.exportedAccount(accountDetail),
-
+ h(ReactCSSTransitionGroup, {
+ transitionName: "main",
+ transitionEnterTimeout: 300,
+ transitionLeaveTimeout: 300,
+ }, [
+ this.subview(),
+ ]),
// transaction table
/*
h('section.flex-column', [
@@ -94,72 +99,41 @@ AccountDetailScreen.prototype.render = function() {
)
}
+AccountDetailScreen.prototype.subview = function() {
+ var subview
+ try {
+ subview = this.props.accountDetail.subview
+ } catch (e) {
+ subview = null
+ }
+
+ switch (subview) {
+ case 'transactions':
+ return this.transactionList()
+ case 'export':
+ var state = extend({key: 'export'}, this.props)
+ return h(ExportAccountView, state)
+ default:
+ return this.transactionList()
+ }
+}
+
+AccountDetailScreen.prototype.transactionList = function() {
+ var state = this.props
+ var transactions = state.transactions
+
+ return transactionList(transactions
+ .filter(tx => tx.txParams.from === state.address)
+ .filter(tx => tx.txParams.metamaskNetworkId === state.networkVersion)
+ .sort((a, b) => b.time - a.time), state.networkVersion)
+}
+
AccountDetailScreen.prototype.navigateToAccounts = function(event){
event.stopPropagation()
this.props.dispatch(actions.showAccountsPage())
}
-AccountDetailScreen.prototype.exportAccount = function(address) {
- this.props.dispatch(actions.exportAccount(address))
-}
-
AccountDetailScreen.prototype.requestAccountExport = function() {
this.props.dispatch(actions.requestExportAccount())
}
-AccountDetailScreen.prototype.exportedAccount = function(accountDetail) {
- if (!accountDetail) return
- var accountExport = accountDetail.accountExport
-
- var notExporting = accountExport === 'none'
- var exportRequested = accountExport === 'requested'
- var accountExported = accountExport === 'completed'
-
- if (notExporting) return
-
- if (exportRequested) {
- var warning = `Exporting your private key is very dangerous,
- and you should only do it if you know what you're doing.`
- var confirmation = `If you're absolutely sure, type "I understand" below and
- hit Enter.`
- return h('div', {}, [
- h('p.error', warning),
- h('p', confirmation),
- h('input#exportAccount', {
- onKeyPress: this.onExportKeyPress.bind(this),
- })
- ])
- }
-
- if (accountExported) {
- return h('div.privateKey', {
-
- }, [
- h('label', 'Your private key (click to copy):'),
- h('p.error.cursor-pointer', {
- style: {
- textOverflow: 'ellipsis',
- overflow: 'hidden',
- webkitUserSelect: 'text',
- width: '100%',
- },
- onClick: function(event) {
- copyToClipboard(accountDetail.privateKey)
- }
- }, accountDetail.privateKey),
- ])
- }
-}
-
-AccountDetailScreen.prototype.onExportKeyPress = function(event) {
- if (event.key !== 'Enter') return
- event.preventDefault()
-
- var input = document.getElementById('exportAccount')
- if (input.value === 'I understand') {
- this.props.dispatch(actions.exportAccount(this.props.address))
- } else {
- input.value = ''
- input.placeholder = 'Please retype "I understand" exactly.'
- }
-}