mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 01:39:44 +01:00
Merge github.com:MetaMask/metamask-plugin into i765-gaslimits
This commit is contained in:
commit
30e4bdf24b
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
"globals": {
|
"globals": {
|
||||||
"document": false,
|
"document": false,
|
||||||
|
"log": true,
|
||||||
"navigator": false,
|
"navigator": false,
|
||||||
"web3": true,
|
"web3": true,
|
||||||
"window": false
|
"window": false
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Current Master
|
## Current Master
|
||||||
|
|
||||||
|
## 3.3.0 2017-2-20
|
||||||
|
|
||||||
|
- Add personal_sign and personal_ecRecover support.
|
||||||
- net_version has been made synchronous.
|
- net_version has been made synchronous.
|
||||||
- Test suite for migrations expanded.
|
- Test suite for migrations expanded.
|
||||||
- Network now changeable from lock screen.
|
- Network now changeable from lock screen.
|
||||||
|
|
||||||
- Improve test coverage of eth.sign behavior, including a code example of verifying a signature.
|
- Improve test coverage of eth.sign behavior, including a code example of verifying a signature.
|
||||||
|
|
||||||
## 3.2.2 2017-2-8
|
## 3.2.2 2017-2-8
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "MetaMask",
|
"name": "MetaMask",
|
||||||
"short_name": "Metamask",
|
"short_name": "Metamask",
|
||||||
"version": "3.2.2",
|
"version": "3.3.0",
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"author": "https://metamask.io",
|
"author": "https://metamask.io",
|
||||||
"description": "Ethereum Browser Extension",
|
"description": "Ethereum Browser Extension",
|
||||||
|
0
development/notices/.gitkeep
Normal file
0
development/notices/.gitkeep
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
107
development/states/pending-tx-insufficient.json
Normal file
107
development/states/pending-tx-insufficient.json
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
"metamask": {
|
||||||
|
"isInitialized": true,
|
||||||
|
"isUnlocked": true,
|
||||||
|
"rpcTarget": "https://rawtestrpc.metamask.io/",
|
||||||
|
"identities": {
|
||||||
|
"0xa06599bd35921cfb5b71b4be3869740385b0b306": {
|
||||||
|
"address": "0xa06599bd35921cfb5b71b4be3869740385b0b306",
|
||||||
|
"name": "Account 1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"unapprovedTxs": {
|
||||||
|
"1188547363326880": {
|
||||||
|
"id": 1188547363326880,
|
||||||
|
"time": 1487662234127,
|
||||||
|
"status": "unapproved",
|
||||||
|
"gasMultiplier": 1,
|
||||||
|
"metamaskNetworkId": "3",
|
||||||
|
"txParams": {
|
||||||
|
"from": "0xa06599bd35921cfb5b71b4be3869740385b0b306",
|
||||||
|
"to": "0x18a3462427bcc9133bb46e88bcbe39cd7ef0e761",
|
||||||
|
"value": "0xde0b6b3a7640000",
|
||||||
|
"metamaskId": 1188547363326880,
|
||||||
|
"metamaskNetworkId": "3",
|
||||||
|
"gas": "0x5209"
|
||||||
|
},
|
||||||
|
"gasLimitSpecified": false,
|
||||||
|
"estimatedGas": "0x5209",
|
||||||
|
"txFee": "17e0186e60800",
|
||||||
|
"txValue": "de0b6b3a7640000",
|
||||||
|
"maxCost": "de234b52e4a0800"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"currentFiat": "USD",
|
||||||
|
"conversionRate": 12.59854817,
|
||||||
|
"conversionDate": 1487662141,
|
||||||
|
"noActiveNotices": true,
|
||||||
|
"network": "3",
|
||||||
|
"accounts": {
|
||||||
|
"0xa06599bd35921cfb5b71b4be3869740385b0b306": {
|
||||||
|
"nonce": "0x0",
|
||||||
|
"balance": "0x0",
|
||||||
|
"code": "0x",
|
||||||
|
"address": "0xa06599bd35921cfb5b71b4be3869740385b0b306"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"transactions": {},
|
||||||
|
"selectedAddressTxList": [
|
||||||
|
{
|
||||||
|
"id": 1188547363326880,
|
||||||
|
"time": 1487662234127,
|
||||||
|
"status": "unapproved",
|
||||||
|
"gasMultiplier": 1,
|
||||||
|
"metamaskNetworkId": "3",
|
||||||
|
"txParams": {
|
||||||
|
"from": "0xa06599bd35921cfb5b71b4be3869740385b0b306",
|
||||||
|
"to": "0x18a3462427bcc9133bb46e88bcbe39cd7ef0e761",
|
||||||
|
"value": "0xde0b6b3a7640000",
|
||||||
|
"metamaskId": 1188547363326880,
|
||||||
|
"metamaskNetworkId": "3",
|
||||||
|
"gas": "0x5209"
|
||||||
|
},
|
||||||
|
"gasLimitSpecified": false,
|
||||||
|
"estimatedGas": "0x5209",
|
||||||
|
"txFee": "17e0186e60800",
|
||||||
|
"txValue": "de0b6b3a7640000",
|
||||||
|
"maxCost": "de234b52e4a0800"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"unapprovedMsgs": {},
|
||||||
|
"unapprovedMsgCount": 0,
|
||||||
|
"keyringTypes": [
|
||||||
|
"Simple Key Pair",
|
||||||
|
"HD Key Tree"
|
||||||
|
],
|
||||||
|
"keyrings": [
|
||||||
|
{
|
||||||
|
"type": "HD Key Tree",
|
||||||
|
"accounts": [
|
||||||
|
"a06599bd35921cfb5b71b4be3869740385b0b306"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"selectedAddress": "0xa06599bd35921cfb5b71b4be3869740385b0b306",
|
||||||
|
"currentCurrency": "USD",
|
||||||
|
"provider": {
|
||||||
|
"type": "testnet"
|
||||||
|
},
|
||||||
|
"shapeShiftTxList": [],
|
||||||
|
"lostAccounts": [],
|
||||||
|
"seedWords": null
|
||||||
|
},
|
||||||
|
"appState": {
|
||||||
|
"menuOpen": false,
|
||||||
|
"currentView": {
|
||||||
|
"name": "confTx",
|
||||||
|
"context": 0
|
||||||
|
},
|
||||||
|
"accountDetail": {
|
||||||
|
"subview": "transactions"
|
||||||
|
},
|
||||||
|
"transForward": true,
|
||||||
|
"isLoading": false,
|
||||||
|
"warning": null
|
||||||
|
},
|
||||||
|
"identities": {}
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
{"metamask":{"isInitialized":true,"isUnlocked":true,"currentDomain":"example.com","rpcTarget":"https://rawtestrpc.metamask.io/","identities":{"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825":{"name":"Wallet 1","address":"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825","mayBeFauceting":false},"0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb":{"name":"Wallet 2","address":"0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb","mayBeFauceting":false},"0x2f8d4a878cfa04a6e60d46362f5644deab66572d":{"name":"Wallet 3","address":"0x2f8d4a878cfa04a6e60d46362f5644deab66572d","mayBeFauceting":false}},"unconfTxs":{"1467868023090690":{"id":1467868023090690,"txParams":{"data":"0xa9059cbb0000000000000000000000008deb4d106090c3eb8f1950f727e87c4f884fb06f0000000000000000000000000000000000000000000000000000000000000064","from":"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825","value":"0x16345785d8a0000","to":"0xbeb0ed3034c4155f3d16a64a5c5e7c8d4ea9e9c9","origin":"MetaMask","metamaskId":1467868023090690,"metamaskNetworkId":"2"},"time":1467868023090,"status":"unconfirmed","containsDelegateCall":false}},"accounts":{"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825":{"code":"0x","balance":"0x38326dc32cf80800","nonce":"0x10000c","address":"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825"},"0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb":{"code":"0x","balance":"0x15e578bd8e9c8000","nonce":"0x100000","address":"0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb"},"0x2f8d4a878cfa04a6e60d46362f5644deab66572d":{"code":"0x","nonce":"0x100000","balance":"0x2386f26fc10000","address":"0x2f8d4a878cfa04a6e60d46362f5644deab66572d"}},"transactions":[],"selectedAddress":"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825","network":"2","seedWords":null,"unconfMsgs":{},"messages":[],"provider":{"type":"testnet"},"selectedAddress":"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825"},"appState":{"menuOpen":false,"currentView":{"name":"confTx","context":0},"accountDetail":{"subview":"transactions"},"currentDomain":"extensions","transForward":true,"isLoading":false,"warning":null},"identities":{}}
|
|
File diff suppressed because one or more lines are too long
@ -26,6 +26,9 @@ const firstTimeState = require('./app/scripts/first-time-state')
|
|||||||
const extension = require('./development/mockExtension')
|
const extension = require('./development/mockExtension')
|
||||||
const noop = function () {}
|
const noop = function () {}
|
||||||
|
|
||||||
|
const log = require('loglevel')
|
||||||
|
window.log = log
|
||||||
|
log.setLevel('debug')
|
||||||
|
|
||||||
//
|
//
|
||||||
// Query String
|
// Query String
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
"iframe-stream": "^1.0.2",
|
"iframe-stream": "^1.0.2",
|
||||||
"inject-css": "^0.1.1",
|
"inject-css": "^0.1.1",
|
||||||
"jazzicon": "^1.2.0",
|
"jazzicon": "^1.2.0",
|
||||||
|
"loglevel": "^1.4.1",
|
||||||
"menu-droppo": "^1.1.0",
|
"menu-droppo": "^1.1.0",
|
||||||
"metamask-logo": "^2.1.2",
|
"metamask-logo": "^2.1.2",
|
||||||
"mississippi": "^1.2.0",
|
"mississippi": "^1.2.0",
|
||||||
@ -105,7 +106,7 @@
|
|||||||
"valid-url": "^1.0.9",
|
"valid-url": "^1.0.9",
|
||||||
"vreme": "^3.0.2",
|
"vreme": "^3.0.2",
|
||||||
"web3": "0.18.2",
|
"web3": "0.18.2",
|
||||||
"web3-provider-engine": "^8.5.0",
|
"web3-provider-engine": "^9.1.0",
|
||||||
"web3-stream-provider": "^2.0.6",
|
"web3-stream-provider": "^2.0.6",
|
||||||
"xtend": "^4.0.1"
|
"xtend": "^4.0.1"
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
|
var log = require('loglevel')
|
||||||
|
log.setDefaultLevel(5)
|
||||||
|
|
||||||
require('jsdom-global')()
|
require('jsdom-global')()
|
||||||
window.localStorage = {}
|
window.localStorage = {}
|
||||||
|
|
||||||
if (!('crypto' in window)) { window.crypto = {} }
|
if (!('crypto' in window)) { window.crypto = {} }
|
||||||
window.crypto.getRandomValues = require('polyfill-crypto.getrandomvalues')
|
window.crypto.getRandomValues = require('polyfill-crypto.getrandomvalues')
|
||||||
|
|
||||||
|
window.log = log
|
||||||
|
global.log = log
|
||||||
|
@ -9,6 +9,23 @@ QUnit.test('render init screen', function (assert) {
|
|||||||
wait().then(function() {
|
wait().then(function() {
|
||||||
app = $('iframe').contents().find('#app-content .mock-app-root')
|
app = $('iframe').contents().find('#app-content .mock-app-root')
|
||||||
|
|
||||||
|
const recurseNotices = function () {
|
||||||
|
let button = app.find('button')
|
||||||
|
if (button.html() === 'Continue') {
|
||||||
|
let termsPage = app.find('.markdown')[0]
|
||||||
|
termsPage.scrollTop = termsPage.scrollHeight
|
||||||
|
return wait().then(() => {
|
||||||
|
button.click()
|
||||||
|
return wait()
|
||||||
|
}).then(() => {
|
||||||
|
return recurseNotices()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
return wait()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return recurseNotices()
|
||||||
|
}).then(function() {
|
||||||
// Scroll through terms
|
// Scroll through terms
|
||||||
var title = app.find('h1').text()
|
var title = app.find('h1').text()
|
||||||
assert.equal(title, 'MetaMask', 'title screen')
|
assert.equal(title, 'MetaMask', 'title screen')
|
||||||
|
@ -22,6 +22,11 @@ const configureStore = require('./development/uiStore')
|
|||||||
const states = require('./development/states')
|
const states = require('./development/states')
|
||||||
const Selector = require('./development/selector')
|
const Selector = require('./development/selector')
|
||||||
|
|
||||||
|
// logger
|
||||||
|
const log = require('loglevel')
|
||||||
|
window.log = log
|
||||||
|
log.setDefaultLevel(1)
|
||||||
|
|
||||||
// Query String
|
// Query String
|
||||||
const qs = require('qs')
|
const qs = require('qs')
|
||||||
let queryString = qs.parse(window.location.href.split('#')[1])
|
let queryString = qs.parse(window.location.href.split('#')[1])
|
||||||
|
@ -350,13 +350,15 @@ App.prototype.renderPrimary = function () {
|
|||||||
var props = this.props
|
var props = this.props
|
||||||
|
|
||||||
// notices
|
// notices
|
||||||
if (!props.noActiveNotices && !global.METAMASK_DEBUG) {
|
if (!props.noActiveNotices) {
|
||||||
|
log.debug('rendering notice screen for unread notices.')
|
||||||
return h(NoticeScreen, {
|
return h(NoticeScreen, {
|
||||||
notice: props.lastUnreadNotice,
|
notice: props.lastUnreadNotice,
|
||||||
key: 'NoticeScreen',
|
key: 'NoticeScreen',
|
||||||
onConfirm: () => props.dispatch(actions.markNoticeRead(props.lastUnreadNotice)),
|
onConfirm: () => props.dispatch(actions.markNoticeRead(props.lastUnreadNotice)),
|
||||||
})
|
})
|
||||||
} else if (props.lostAccounts && props.lostAccounts.length > 0) {
|
} else if (props.lostAccounts && props.lostAccounts.length > 0) {
|
||||||
|
log.debug('rendering notice screen for lost accounts view.')
|
||||||
return h(NoticeScreen, {
|
return h(NoticeScreen, {
|
||||||
notice: generateLostAccountsNotice(props.lostAccounts),
|
notice: generateLostAccountsNotice(props.lostAccounts),
|
||||||
key: 'LostAccountsNotice',
|
key: 'LostAccountsNotice',
|
||||||
@ -365,18 +367,22 @@ App.prototype.renderPrimary = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (props.seedWords) {
|
if (props.seedWords) {
|
||||||
|
log.debug('rendering seed words')
|
||||||
return h(HDCreateVaultComplete, {key: 'HDCreateVaultComplete'})
|
return h(HDCreateVaultComplete, {key: 'HDCreateVaultComplete'})
|
||||||
}
|
}
|
||||||
|
|
||||||
// show initialize screen
|
// show initialize screen
|
||||||
if (!props.isInitialized || props.forgottenPassword) {
|
if (!props.isInitialized || props.forgottenPassword) {
|
||||||
// show current view
|
// show current view
|
||||||
|
log.debug('rendering an initialize screen')
|
||||||
switch (props.currentView.name) {
|
switch (props.currentView.name) {
|
||||||
|
|
||||||
case 'restoreVault':
|
case 'restoreVault':
|
||||||
|
log.debug('rendering restore vault screen')
|
||||||
return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'})
|
return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'})
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
log.debug('rendering menu screen')
|
||||||
return h(InitializeMenuScreen, {key: 'menuScreenInit'})
|
return h(InitializeMenuScreen, {key: 'menuScreenInit'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -386,9 +392,11 @@ App.prototype.renderPrimary = function () {
|
|||||||
switch (props.currentView.name) {
|
switch (props.currentView.name) {
|
||||||
|
|
||||||
case 'restoreVault':
|
case 'restoreVault':
|
||||||
|
log.debug('rendering restore vault screen')
|
||||||
return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'})
|
return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'})
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
log.debug('rendering locked screen')
|
||||||
return h(UnlockScreen, {key: 'locked'})
|
return h(UnlockScreen, {key: 'locked'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -397,36 +405,47 @@ App.prototype.renderPrimary = function () {
|
|||||||
switch (props.currentView.name) {
|
switch (props.currentView.name) {
|
||||||
|
|
||||||
case 'accounts':
|
case 'accounts':
|
||||||
|
log.debug('rendering accounts screen')
|
||||||
return h(AccountsScreen, {key: 'accounts'})
|
return h(AccountsScreen, {key: 'accounts'})
|
||||||
|
|
||||||
case 'accountDetail':
|
case 'accountDetail':
|
||||||
|
log.debug('rendering account detail screen')
|
||||||
return h(AccountDetailScreen, {key: 'account-detail'})
|
return h(AccountDetailScreen, {key: 'account-detail'})
|
||||||
|
|
||||||
case 'sendTransaction':
|
case 'sendTransaction':
|
||||||
|
log.debug('rendering send tx screen')
|
||||||
return h(SendTransactionScreen, {key: 'send-transaction'})
|
return h(SendTransactionScreen, {key: 'send-transaction'})
|
||||||
|
|
||||||
case 'newKeychain':
|
case 'newKeychain':
|
||||||
|
log.debug('rendering new keychain screen')
|
||||||
return h(NewKeyChainScreen, {key: 'new-keychain'})
|
return h(NewKeyChainScreen, {key: 'new-keychain'})
|
||||||
|
|
||||||
case 'confTx':
|
case 'confTx':
|
||||||
|
log.debug('rendering confirm tx screen')
|
||||||
return h(ConfirmTxScreen, {key: 'confirm-tx'})
|
return h(ConfirmTxScreen, {key: 'confirm-tx'})
|
||||||
|
|
||||||
case 'config':
|
case 'config':
|
||||||
|
log.debug('rendering config screen')
|
||||||
return h(ConfigScreen, {key: 'config'})
|
return h(ConfigScreen, {key: 'config'})
|
||||||
|
|
||||||
case 'import-menu':
|
case 'import-menu':
|
||||||
|
log.debug('rendering import screen')
|
||||||
return h(Import, {key: 'import-menu'})
|
return h(Import, {key: 'import-menu'})
|
||||||
|
|
||||||
case 'reveal-seed-conf':
|
case 'reveal-seed-conf':
|
||||||
|
log.debug('rendering reveal seed confirmation screen')
|
||||||
return h(RevealSeedConfirmation, {key: 'reveal-seed-conf'})
|
return h(RevealSeedConfirmation, {key: 'reveal-seed-conf'})
|
||||||
|
|
||||||
case 'info':
|
case 'info':
|
||||||
|
log.debug('rendering info screen')
|
||||||
return h(InfoScreen, {key: 'info'})
|
return h(InfoScreen, {key: 'info'})
|
||||||
|
|
||||||
case 'buyEth':
|
case 'buyEth':
|
||||||
|
log.debug('rendering buy ether screen')
|
||||||
return h(BuyView, {key: 'buyEthView'})
|
return h(BuyView, {key: 'buyEthView'})
|
||||||
|
|
||||||
case 'qr':
|
case 'qr':
|
||||||
|
log.debug('rendering show qr screen')
|
||||||
return h('div', {
|
return h('div', {
|
||||||
style: {
|
style: {
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
@ -454,6 +473,7 @@ App.prototype.renderPrimary = function () {
|
|||||||
])
|
])
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
log.debug('rendering default, account detail screen')
|
||||||
return h(AccountDetailScreen, {key: 'account-detail'})
|
return h(AccountDetailScreen, {key: 'account-detail'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,12 @@ function Notice () {
|
|||||||
Notice.prototype.render = function () {
|
Notice.prototype.render = function () {
|
||||||
const { notice, onConfirm } = this.props
|
const { notice, onConfirm } = this.props
|
||||||
const { title, date, body } = notice
|
const { title, date, body } = notice
|
||||||
|
const state = this.state || { disclaimerDisabled: true }
|
||||||
|
const disabled = state.disclaimerDisabled
|
||||||
|
|
||||||
return (
|
return (
|
||||||
h('.flex-column.flex-center.flex-grow', [
|
h('.flex-column.flex-center.flex-grow', [
|
||||||
h('h3.flex-center.text-transform-uppercacse.terms-header', {
|
h('h3.flex-center.text-transform-uppercase.terms-header', {
|
||||||
style: {
|
style: {
|
||||||
background: '#EBEBEB',
|
background: '#EBEBEB',
|
||||||
color: '#AEAEAE',
|
color: '#AEAEAE',
|
||||||
@ -31,7 +33,7 @@ Notice.prototype.render = function () {
|
|||||||
title,
|
title,
|
||||||
]),
|
]),
|
||||||
|
|
||||||
h('h5.flex-center.text-transform-uppercacse.terms-header', {
|
h('h5.flex-center.text-transform-uppercase.terms-header', {
|
||||||
style: {
|
style: {
|
||||||
background: '#EBEBEB',
|
background: '#EBEBEB',
|
||||||
color: '#AEAEAE',
|
color: '#AEAEAE',
|
||||||
@ -74,6 +76,12 @@ Notice.prototype.render = function () {
|
|||||||
`),
|
`),
|
||||||
|
|
||||||
h('div.markdown', {
|
h('div.markdown', {
|
||||||
|
onScroll: (e) => {
|
||||||
|
var object = e.currentTarget
|
||||||
|
if (object.offsetHeight + object.scrollTop + 100 >= object.scrollHeight) {
|
||||||
|
this.setState({disclaimerDisabled: false})
|
||||||
|
}
|
||||||
|
},
|
||||||
style: {
|
style: {
|
||||||
background: 'rgb(235, 235, 235)',
|
background: 'rgb(235, 235, 235)',
|
||||||
height: '310px',
|
height: '310px',
|
||||||
@ -90,6 +98,7 @@ Notice.prototype.render = function () {
|
|||||||
]),
|
]),
|
||||||
|
|
||||||
h('button', {
|
h('button', {
|
||||||
|
disabled,
|
||||||
onClick: onConfirm,
|
onClick: onConfirm,
|
||||||
style: {
|
style: {
|
||||||
marginTop: '18px',
|
marginTop: '18px',
|
||||||
|
@ -47,6 +47,8 @@ ConfirmTxScreen.prototype.render = function () {
|
|||||||
var txData = unconfTxList[index] || {}
|
var txData = unconfTxList[index] || {}
|
||||||
var txParams = txData.params || {}
|
var txParams = txData.params || {}
|
||||||
var isNotification = isPopupOrNotification() === 'notification'
|
var isNotification = isPopupOrNotification() === 'notification'
|
||||||
|
|
||||||
|
log.info(`rendering a combined ${unconfTxList.length} unconf msg & txs`)
|
||||||
if (unconfTxList.length === 0) return null
|
if (unconfTxList.length === 0) return null
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -120,11 +122,14 @@ function currentTxView (opts) {
|
|||||||
const { txData } = opts
|
const { txData } = opts
|
||||||
const { txParams, msgParams } = txData
|
const { txParams, msgParams } = txData
|
||||||
|
|
||||||
|
log.info('rendering current tx view')
|
||||||
if (txParams) {
|
if (txParams) {
|
||||||
// This is a pending transaction
|
// This is a pending transaction
|
||||||
|
log.debug('txParams detected, rendering pending tx')
|
||||||
return h(PendingTx, opts)
|
return h(PendingTx, opts)
|
||||||
} else if (msgParams) {
|
} else if (msgParams) {
|
||||||
// This is a pending message to sign
|
// This is a pending message to sign
|
||||||
|
log.debug('msgParams detected, rendering pending msg')
|
||||||
return h(PendingMsg, opts)
|
return h(PendingMsg, opts)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,10 @@ const configureStore = require('./app/store')
|
|||||||
const txHelper = require('./lib/tx-helper')
|
const txHelper = require('./lib/tx-helper')
|
||||||
module.exports = launchApp
|
module.exports = launchApp
|
||||||
|
|
||||||
|
const log = require('loglevel')
|
||||||
|
window.log = log
|
||||||
|
log.setLevel('warn')
|
||||||
|
|
||||||
function launchApp (opts) {
|
function launchApp (opts) {
|
||||||
var accountManager = opts.accountManager
|
var accountManager = opts.accountManager
|
||||||
actions._setBackgroundConnection(accountManager)
|
actions._setBackgroundConnection(accountManager)
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
const valuesFor = require('../app/util').valuesFor
|
const valuesFor = require('../app/util').valuesFor
|
||||||
|
|
||||||
module.exports = function (unapprovedTxs, unapprovedMsgs, network) {
|
module.exports = function (unapprovedTxs, unapprovedMsgs, network) {
|
||||||
|
log.debug('tx-helper called with params:')
|
||||||
|
log.debug({ unapprovedTxs, unapprovedMsgs, network })
|
||||||
|
|
||||||
var txValues = network ? valuesFor(unapprovedTxs).filter(tx => tx.txParams.metamaskNetworkId === network) : valuesFor(unapprovedTxs)
|
var txValues = network ? valuesFor(unapprovedTxs).filter(tx => tx.txParams.metamaskNetworkId === network) : valuesFor(unapprovedTxs)
|
||||||
|
log.debug(`tx helper found ${txValues.length} unapproved txs`)
|
||||||
var msgValues = valuesFor(unapprovedMsgs)
|
var msgValues = valuesFor(unapprovedMsgs)
|
||||||
|
log.debug(`tx helper found ${msgValues.length} unsigned messages`)
|
||||||
var allValues = txValues.concat(msgValues)
|
var allValues = txValues.concat(msgValues)
|
||||||
return allValues.sort(tx => tx.time)
|
return allValues.sort(tx => tx.time)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user