mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 01:39:44 +01:00
Merge branch 'master' into i#495CustomGasField
This commit is contained in:
commit
3a610f2c06
11
CHANGELOG.md
11
CHANGELOG.md
@ -2,7 +2,18 @@
|
||||
|
||||
## Current Master
|
||||
|
||||
## 2.13.3 2016-10-4
|
||||
|
||||
- Fix bug where log queries were filtered out.
|
||||
- Decreased vault confirmation button font size to help some Linux users who could not see it.
|
||||
- Made popup a little taller because it would sometimes cut off buttons.
|
||||
|
||||
## 2.13.2 2016-10-4
|
||||
|
||||
- Fix bug where chosen FIAT exchange rate does no persist when switching networks
|
||||
- Fix additional parameters that made MetaMask sometimes receive errors from Parity.
|
||||
- Fix bug where invalid transactions would still open the MetaMask popup.
|
||||
- Removed hex prefix from private key export, to increase compatibility with Geth, MyEtherWallet, and Jaxx.
|
||||
|
||||
## 2.13.1 2016-09-23
|
||||
|
||||
|
BIN
app/images/icon-32.png
Normal file
BIN
app/images/icon-32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
app/images/icon-64.png
Normal file
BIN
app/images/icon-64.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "MetaMask",
|
||||
"short_name": "Metamask",
|
||||
"version": "2.13.1",
|
||||
"version": "2.13.3",
|
||||
"manifest_version": 2,
|
||||
"author": "https://metamask.io",
|
||||
"description": "Ethereum Browser Extension",
|
||||
@ -10,7 +10,7 @@
|
||||
"suggested_key": {
|
||||
"windows": "Alt+Shift+M",
|
||||
"mac": "Alt+Shift+M",
|
||||
"chromeos": "Search+M",
|
||||
"chromeos": "Alt+Shift+M",
|
||||
"linux": "Alt+Shift+M"
|
||||
}
|
||||
}
|
||||
@ -55,9 +55,10 @@
|
||||
}
|
||||
],
|
||||
"permissions": [
|
||||
"notifications",
|
||||
"storage",
|
||||
"tabs",
|
||||
"clipboardWrite",
|
||||
"clipboardRead",
|
||||
"http://localhost:8545/"
|
||||
],
|
||||
"web_accessible_resources": [
|
||||
|
@ -33,7 +33,7 @@ function IdManagement (opts) {
|
||||
// normalize values
|
||||
|
||||
txParams.to = ethUtil.addHexPrefix(txParams.to)
|
||||
txParams.from = ethUtil.addHexPrefix(txParams.from)
|
||||
txParams.from = ethUtil.addHexPrefix(txParams.from.toLowerCase())
|
||||
txParams.value = ethUtil.addHexPrefix(txParams.value)
|
||||
txParams.data = ethUtil.addHexPrefix(txParams.data)
|
||||
txParams.gasLimit = ethUtil.addHexPrefix(txParams.gasLimit || txParams.gas)
|
||||
@ -58,7 +58,7 @@ function IdManagement (opts) {
|
||||
|
||||
this.signMsg = function (address, message) {
|
||||
// sign message
|
||||
var privKeyHex = this.exportPrivateKey(address)
|
||||
var privKeyHex = this.exportPrivateKey(address.toLowerCase())
|
||||
var privKey = ethUtil.toBuffer(privKeyHex)
|
||||
var msgSig = ethUtil.ecsign(new Buffer(message.replace('0x', ''), 'hex'), privKey)
|
||||
var rawMsgSig = ethUtil.bufferToHex(concatSig(msgSig.v, msgSig.r, msgSig.s))
|
||||
|
@ -33,7 +33,7 @@ function MetamaskInpageProvider (connectionStream) {
|
||||
})
|
||||
asyncProvider.on('error', console.error.bind(console))
|
||||
self.asyncProvider = asyncProvider
|
||||
|
||||
|
||||
self.idMap = {}
|
||||
// handle sendAsync requests via asyncProvider
|
||||
self.sendAsync = function(payload, cb){
|
||||
@ -61,7 +61,7 @@ function MetamaskInpageProvider (connectionStream) {
|
||||
|
||||
MetamaskInpageProvider.prototype.send = function (payload) {
|
||||
const self = this
|
||||
|
||||
|
||||
let selectedAddress
|
||||
let result = null
|
||||
switch (payload.method) {
|
||||
@ -80,8 +80,8 @@ MetamaskInpageProvider.prototype.send = function (payload) {
|
||||
|
||||
// throw not-supported Error
|
||||
default:
|
||||
var message = 'The MetaMask Web3 object does not support synchronous methods like ' + payload.method +
|
||||
'. See https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#all-async---think-of-metamask-as-a-light-client for details.'
|
||||
var link = 'https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client'
|
||||
var message = `The MetaMask Web3 object does not support synchronous methods like ${payload.method}. See ${link} for details.`
|
||||
throw new Error(message)
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
const extension = require('./extension')
|
||||
const height = 500
|
||||
const height = 520
|
||||
const width = 360
|
||||
|
||||
const notifications = {
|
||||
|
@ -203,26 +203,15 @@ module.exports = class MetamaskController {
|
||||
|
||||
newUnsignedTransaction (txParams, onTxDoneCb) {
|
||||
const idStore = this.idStore
|
||||
var state = idStore.getState()
|
||||
|
||||
let err = this.enforceTxValidations(txParams)
|
||||
if (err) return onTxDoneCb(err)
|
||||
|
||||
// It's locked
|
||||
if (!state.isUnlocked) {
|
||||
|
||||
// Allow the environment to define an unlock message.
|
||||
this.opts.unlockAccountMessage()
|
||||
idStore.addUnconfirmedTransaction(txParams, onTxDoneCb, noop)
|
||||
|
||||
// It's unlocked
|
||||
} else {
|
||||
idStore.addUnconfirmedTransaction(txParams, onTxDoneCb, (err, txData) => {
|
||||
if (err) return onTxDoneCb(err)
|
||||
this.sendUpdate()
|
||||
this.opts.showUnconfirmedTx(txParams, txData, onTxDoneCb)
|
||||
})
|
||||
}
|
||||
idStore.addUnconfirmedTransaction(txParams, onTxDoneCb, (err, txData) => {
|
||||
if (err) return onTxDoneCb(err)
|
||||
this.sendUpdate()
|
||||
this.opts.showUnconfirmedTx(txParams, txData, onTxDoneCb)
|
||||
})
|
||||
}
|
||||
|
||||
enforceTxValidations (txParams) {
|
||||
@ -353,4 +342,3 @@ module.exports = class MetamaskController {
|
||||
}
|
||||
}
|
||||
|
||||
function noop () {}
|
||||
|
12
development/announcer.js
Normal file
12
development/announcer.js
Normal file
@ -0,0 +1,12 @@
|
||||
var manifest = require('../app/manifest.json')
|
||||
var version = manifest.version
|
||||
|
||||
var fs = require('fs')
|
||||
var path = require('path')
|
||||
var changelog = fs.readFileSync(path.join(__dirname, '..', 'CHANGELOG.md')).toString()
|
||||
|
||||
var log = changelog.split(version)[1].split('##')[0].trim()
|
||||
|
||||
let msg = `*MetaMask ${version}* now published to the Chrome Store! It should auto-update over the next hour!\n${log}`
|
||||
|
||||
console.log(msg)
|
File diff suppressed because one or more lines are too long
8
docs/extension_description/en.txt
Normal file
8
docs/extension_description/en.txt
Normal file
@ -0,0 +1,8 @@
|
||||
MetaMask is an extension for accessing Ethereum enabled distributed applications, or "Dapps" in your normal browser!
|
||||
|
||||
The extension injects the Ethereum web3 API into every website's javascript context, so that dapps can read from the blockchain.
|
||||
|
||||
MetaMask also lets the user create and manage their own identities, so when a Dapp wants to perform a transaction and write to the blockchain, the user gets a secure interface to review the transaction, before approving or rejecting it.
|
||||
|
||||
Because it adds functionality to the normal browser context, MetaMask requires the permission to read and write to any webpage. You can always "view the source" of MetaMask the way you do any extension, or view the source code on Github:
|
||||
https://github.com/MetaMask/metamask-plugin
|
@ -15,7 +15,8 @@
|
||||
"mock": "beefy mock-dev.js:bundle.js --live --open --index=./development/index.html --cwd ./",
|
||||
"buildMock": "browserify ./mock-dev.js -o ./development/bundle.js",
|
||||
"testem": "npm run buildMock && testem",
|
||||
"ci": "npm run buildMock && testem ci -P 2"
|
||||
"ci": "npm run buildMock && testem ci -P 2",
|
||||
"announce": "node development/announcer.js"
|
||||
},
|
||||
"browserify": {
|
||||
"transform": [
|
||||
@ -81,7 +82,7 @@
|
||||
"through2": "^2.0.1",
|
||||
"vreme": "^3.0.2",
|
||||
"web3": "ethereum/web3.js#260ac6e78a8ce4b2e13f5bb0fdb65f4088585876",
|
||||
"web3-provider-engine": "^8.0.7",
|
||||
"web3-provider-engine": "^8.1.5",
|
||||
"web3-stream-provider": "^2.0.6",
|
||||
"xtend": "^4.0.1"
|
||||
},
|
||||
|
@ -3,6 +3,7 @@ const h = require('react-hyperscript')
|
||||
const inherits = require('util').inherits
|
||||
const copyToClipboard = require('copy-to-clipboard')
|
||||
const actions = require('../actions')
|
||||
const ethUtil = require('ethereumjs-util')
|
||||
|
||||
module.exports = ExportAccountView
|
||||
|
||||
@ -61,7 +62,9 @@ ExportAccountView.prototype.render = function () {
|
||||
|
||||
if (accountExported) {
|
||||
return h('div.privateKey', {
|
||||
|
||||
style: {
|
||||
margin: '0 20px',
|
||||
},
|
||||
}, [
|
||||
h('label', 'Your private key (click to copy):'),
|
||||
h('p.error.cursor-pointer', {
|
||||
@ -72,9 +75,9 @@ ExportAccountView.prototype.render = function () {
|
||||
width: '100%',
|
||||
},
|
||||
onClick: function (event) {
|
||||
copyToClipboard(accountDetail.privateKey)
|
||||
copyToClipboard(ethUtil.stripHexPrefix(accountDetail.privateKey))
|
||||
},
|
||||
}, accountDetail.privateKey),
|
||||
}, ethUtil.stripHexPrefix(accountDetail.privateKey)),
|
||||
h('button', {
|
||||
onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)),
|
||||
}, 'Done'),
|
||||
|
@ -61,6 +61,7 @@ CreateVaultCompleteScreen.prototype.render = function () {
|
||||
onClick: () => this.confirmSeedWords(),
|
||||
style: {
|
||||
margin: '24px',
|
||||
fontSize: '0.9em',
|
||||
},
|
||||
}, 'I\'ve copied it somewhere safe'),
|
||||
])
|
||||
|
Loading…
Reference in New Issue
Block a user