Merge branch 'master' into i3787-make-t-available-via-context

feature/default_network_editable
Dan 7 years ago
commit 949ac352de
  1. 1
      CHANGELOG.md
  2. 63
      app/_locales/de/messages.json
  3. 16
      app/_locales/nl/messages.json
  4. 6
      old-ui/app/components/pending-tx.js
  5. 33
      test/e2e/metamask.spec.js

@ -3,6 +3,7 @@
## Current Master ## Current Master
- Fix bug where the "Reset account" feature would not clear the network cache. - Fix bug where the "Reset account" feature would not clear the network cache.
- Increase maximum gas limit, to allow very gas heavy transactions, since block gas limits have been stable.
## 4.4.0 Mon Mar 26 2018 ## 4.4.0 Mon Mar 26 2018

@ -14,9 +14,15 @@
"address": { "address": {
"message": "Adresse" "message": "Adresse"
}, },
"addCustomToken": {
"message": "Eigenen Token hinzufügen"
},
"addToken": { "addToken": {
"message": "Token hinzufügen" "message": "Token hinzufügen"
}, },
"addTokens": {
"message": "Token hinzufügen"
},
"amount": { "amount": {
"message": "Betrag" "message": "Betrag"
}, },
@ -31,9 +37,15 @@
"message": "MetaMask", "message": "MetaMask",
"description": "Der Name der Erweiterung" "description": "Der Name der Erweiterung"
}, },
"approved": {
"message": "Genehmigt"
},
"attemptingConnect": { "attemptingConnect": {
"message": "Versuch mit der Blockchain zu verbinden." "message": "Versuch mit der Blockchain zu verbinden."
}, },
"attributions": {
"message": "Was wir verwenden"
},
"available": { "available": {
"message": "Verfügbar" "message": "Verfügbar"
}, },
@ -43,6 +55,9 @@
"balance": { "balance": {
"message": "Guthaben:" "message": "Guthaben:"
}, },
"balances": {
"message": "Deine Guthaben"
},
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Guthaben unzureichend für den aktuellen gesamten Gasbetrag" "message": "Guthaben unzureichend für den aktuellen gesamten Gasbetrag"
}, },
@ -69,7 +84,7 @@
"message": "Auf Coinbase kaufen" "message": "Auf Coinbase kaufen"
}, },
"buyCoinbaseExplainer": { "buyCoinbaseExplainer": {
"message": "Coinbase ist die weltweit bekannteste Möglichkeit bitcoin, ethereum und litecoin zu kaufen und verkaufen." "message": "Coinbase ist die weltweit bekannteste Art und Weise um bitcoin, ethereum und litecoin zu kaufen und verkaufen."
}, },
"ok": { "ok": {
"message": "Ok" "message": "Ok"
@ -105,7 +120,7 @@
"message": "Zu Coinbase fortfahren" "message": "Zu Coinbase fortfahren"
}, },
"contractDeployment": { "contractDeployment": {
"message": "Smart Contract ausführen" "message": "Smart Contract Ausführung"
}, },
"conversionProgress": { "conversionProgress": {
"message": "Umtausch in Arbeit" "message": "Umtausch in Arbeit"
@ -148,7 +163,7 @@
"description": "Börsentyp (Kryptowährungen)" "description": "Börsentyp (Kryptowährungen)"
}, },
"currentConversion": { "currentConversion": {
"message": "Aktueller Umtausch" "message": "Aktuelle Tauschwährung"
}, },
"currentNetwork": { "currentNetwork": {
"message": "Aktuelles Netzwerk" "message": "Aktuelles Netzwerk"
@ -185,7 +200,7 @@
"description": "Teilt dem Benutzer mit welchen Token er beim Einzahlen mit Shapeshift ausgewählt hat" "description": "Teilt dem Benutzer mit welchen Token er beim Einzahlen mit Shapeshift ausgewählt hat"
}, },
"depositEth": { "depositEth": {
"message": "Eth einzahlen" "message": "Eth kaufen"
}, },
"depositEther": { "depositEther": {
"message": "Ether einzahlen" "message": "Ether einzahlen"
@ -274,7 +289,7 @@
"message": "Folge uns auf Twitter" "message": "Folge uns auf Twitter"
}, },
"from": { "from": {
"message": "von" "message": "Von"
}, },
"fromToSame": { "fromToSame": {
"message": "Ziel- und Ursprungsadresse dürfen nicht identisch sein" "message": "Ziel- und Ursprungsadresse dürfen nicht identisch sein"
@ -347,14 +362,14 @@
"message": "Es erlaubt dir ether & Token zu halten und dient dir als Verbindung zu dezentralisierten Applikationen." "message": "Es erlaubt dir ether & Token zu halten und dient dir als Verbindung zu dezentralisierten Applikationen."
}, },
"import": { "import": {
"message": "Import", "message": "Importieren",
"description": "Button um den Account aus einer ausgewählten Datei zu importieren" "description": "Button um den Account aus einer ausgewählten Datei zu importieren"
}, },
"importAccount": { "importAccount": {
"message": "Account importieren" "message": "Account importieren"
}, },
"importAccountMsg": { "importAccountMsg": {
"message":" Importierte Accounts werden nicht mit der Seed Wörterfolge deines ursprünglichen MetaMask Accounts verknüpft. Erfahre mehr über importierte Accounts." "message":" Importierte Accounts werden nicht mit der Seed-Wörterfolge deines ursprünglichen MetaMask Accounts verknüpft. Erfahre mehr über importierte Accounts."
}, },
"importAnAccount": { "importAnAccount": {
"message": "Einen Account importieren" "message": "Einen Account importieren"
@ -369,7 +384,7 @@
"infoHelp": { "infoHelp": {
"message": "Info & Hilfe" "message": "Info & Hilfe"
}, },
"insufficientFunds": { "insufficientFunds": {
"message": "Nicht genügend Guthaben." "message": "Nicht genügend Guthaben."
}, },
"insufficientTokens": { "insufficientTokens": {
@ -441,10 +456,10 @@
"message": "Frei" "message": "Frei"
}, },
"loweCaseWords": { "loweCaseWords": {
"message": "Die Wörter der Seed Wörterfolgen sind alle kleingeschrieben" "message": "Die Wörter der Seed-Wörterfolgen sind alle kleingeschrieben"
}, },
"mainnet": { "mainnet": {
"message": "Ethereum Hauptnetzwerk (Main Net)" "message": "Ethereum Main Net"
}, },
"message": { "message": {
"message": "Nachricht" "message": "Nachricht"
@ -541,7 +556,7 @@
"description": "Für den Import eine Accounts mit Hilfe eines Private Keys" "description": "Für den Import eine Accounts mit Hilfe eines Private Keys"
}, },
"pasteSeed": { "pasteSeed": {
"message": "Füge deine Seed Wörterfolge hier ein!" "message": "Füge deine Seed-Wörterfolge hier ein!"
}, },
"personalAddressDetected": { "personalAddressDetected": {
"message": "Personalisierte Adresse identifiziert. Bitte füge die Token Contract Adresse ein." "message": "Personalisierte Adresse identifiziert. Bitte füge die Token Contract Adresse ein."
@ -557,7 +572,7 @@
"description": "Wähle diesen Dateityp um damit einen Account zu importieren" "description": "Wähle diesen Dateityp um damit einen Account zu importieren"
}, },
"privateKeyWarning": { "privateKeyWarning": {
"message": "Warnung: Niemals jemanden deinen Private Key mitteilen. Jeder der im Besitz deines Private Keys ist, kann jegliches Guthaben deines Accounts stehlen." "message": "Warnung: Niemals jemanden deinen Private Key mitteilen. Jeder der im Besitz deines Private Keys ist, kann jegliches Guthaben deines Accounts stehlen."
}, },
"privateNetwork": { "privateNetwork": {
"message": "Privates Netzwerk" "message": "Privates Netzwerk"
@ -566,7 +581,7 @@
"message": "QR Code anzeigen" "message": "QR Code anzeigen"
}, },
"readdToken": { "readdToken": {
"message": "Du kannst diesen Token zukünftig wieder hinzufügen indem du in den Menüpunkt \"Token hinzufügen\" in den Einstellungen deines Accounts gehst." "message": "Du kannst diesen Token immer erneut hinzufügen, indem du in den Menüpunkt \"Token hinzufügen\" in den Einstellungen deines Accounts gehst."
}, },
"readMore": { "readMore": {
"message": "Hier mehr erfahren." "message": "Hier mehr erfahren."
@ -590,7 +605,7 @@
"message": "Account zurücksetzten" "message": "Account zurücksetzten"
}, },
"restoreFromSeed": { "restoreFromSeed": {
"message": "Mit Hilfe der Seed Wörterfolge wiederherstellen." "message": "Mit Hilfe der Seed-Wörterfolge wiederherstellen."
}, },
"restoreVault": { "restoreVault": {
"message": "Vault wiederherstellen" "message": "Vault wiederherstellen"
@ -605,13 +620,13 @@
"message": "Wallet Seed" "message": "Wallet Seed"
}, },
"revealSeedWords": { "revealSeedWords": {
"message": "Seed Wörterfolge anzeigen" "message": "Seed-Wörterfolge anzeigen"
}, },
"revealSeedWordsWarning": { "revealSeedWordsWarning": {
"message": "Bitte niemals deine Seed Wörterfolge an einem öffentlichen Ort kenntlich machen. Mit diesen Wörtern können alle deine Accounts gestohlen werden." "message": "Bitte niemals deine Seed-Wörterfolge an einem öffentlichen Ort kenntlich machen. Mit diesen Wörtern können alle deine Accounts gestohlen werden."
}, },
"revert": { "revert": {
"message": "Zurück gehen" "message": "Rückgängig machen"
}, },
"rinkeby": { "rinkeby": {
"message": "Rinkeby Testnetzwerk" "message": "Rinkeby Testnetzwerk"
@ -623,7 +638,7 @@
"message": "Aktueller RPC" "message": "Aktueller RPC"
}, },
"connectingToMainnet": { "connectingToMainnet": {
"message": "Verbinde zum Ethereum Hauptnetzwerk (Main Net)" "message": "Verbinde zum Ethereum Main Net"
}, },
"connectingToRopsten": { "connectingToRopsten": {
"message": " Verbinde zum Ropsten Testnetzwerk" "message": " Verbinde zum Ropsten Testnetzwerk"
@ -649,7 +664,7 @@
"description": "Prozess des Exportieren eines Accounts" "description": "Prozess des Exportieren eines Accounts"
}, },
"saveSeedAsFile": { "saveSeedAsFile": {
"message": "Seed Wörterfolge als Datei speichern" "message": "Seed-Wörterfolge als Datei speichern"
}, },
"search": { "search": {
"message": "Suche" "message": "Suche"
@ -661,7 +676,7 @@
"message": "Neues Passwort (min. 8 Zeichen)" "message": "Neues Passwort (min. 8 Zeichen)"
}, },
"seedPhraseReq": { "seedPhraseReq": {
"message": "Seed Wörterfolgen bestehen aus 12 Wörtern" "message": "Seed-Wörterfolgen bestehen aus 12 Wörtern"
}, },
"select": { "select": {
"message": "Auswählen" "message": "Auswählen"
@ -685,7 +700,7 @@
"message": "Token senden" "message": "Token senden"
}, },
"onlySendToEtherAddress": { "onlySendToEtherAddress": {
"message": "ETH nur zu einer Ethereum Adresse senden." "message": "ETH unbedingt nur zu einer Ethereum Adresse senden."
}, },
"sendTokensAnywhere": { "sendTokensAnywhere": {
"message": "Token zu einer beliebigen Person mit einem Ethereumaccount senden" "message": "Token zu einer beliebigen Person mit einem Ethereumaccount senden"
@ -742,7 +757,7 @@
"message": "Einreichen" "message": "Einreichen"
}, },
"submitted": { "submitted": {
"message": "Eingereicht" "message": "Abgeschickt"
}, },
"supportCenter": { "supportCenter": {
"message": "Gehe zu unserem Support Center" "message": "Gehe zu unserem Support Center"
@ -782,7 +797,7 @@
"message": "Tokensymbol" "message": "Tokensymbol"
}, },
"tokenWarning1": { "tokenWarning1": {
"message": "Behalte die Token die du mit deinem MetaMask Account gekauft hast im Auge. Wenn du Token mit einem anderen Account gekauft hast, werden diese hier nicht angezeigt." "message": "Behalte die Token die du mit deinem MetaMask Account gekauft hast im Blick. Wenn du Token mit einem anderen Account gekauft hast, werden diese hier nicht angezeigt."
}, },
"total": { "total": {
"message": "Gesamt" "message": "Gesamt"
@ -853,7 +868,7 @@
"message": " Account einsehen" "message": " Account einsehen"
}, },
"visitWebSite": { "visitWebSite": {
"message": "Gehe zu unsere Webseite" "message": "Gehe zu unserer Webseite"
}, },
"warning": { "warning": {
"message": "Warnung" "message": "Warnung"

@ -299,7 +299,7 @@
"message": "De gaslimiet moet minstens 21000 zijn" "message": "De gaslimiet moet minstens 21000 zijn"
}, },
"generatingSeed": { "generatingSeed": {
"message": "Zaad produceren ..." "message": "Back-up woorden produceren ..."
}, },
"gasPrice": { "gasPrice": {
"message": "Gasprijs (GWEI)" "message": "Gasprijs (GWEI)"
@ -432,7 +432,7 @@
"message": "Los" "message": "Los"
}, },
"loweCaseWords": { "loweCaseWords": {
"message": "zaadwoorden hebben alleen kleine letters" "message": "back-up woorden hebben alleen kleine letters"
}, },
"mainnet": { "mainnet": {
"message": "belangrijkste ethereum-netwerk" "message": "belangrijkste ethereum-netwerk"
@ -532,7 +532,7 @@
"description": "Voor het importeren van een account vanaf een privésleutel" "description": "Voor het importeren van een account vanaf een privésleutel"
}, },
"pasteSeed": { "pasteSeed": {
"message": "Plak je zaadzin hier!" "message": "Plak je back-up woorden hier!"
}, },
"personalAddressDetected": { "personalAddressDetected": {
"message": "Persoonlijk adres gedetecteerd. Voer het tokencontractadres in." "message": "Persoonlijk adres gedetecteerd. Voer het tokencontractadres in."
@ -581,7 +581,7 @@
"message": "Account opnieuw instellen" "message": "Account opnieuw instellen"
}, },
"restoreFromSeed": { "restoreFromSeed": {
"message": "Herstel van zaaduitdrukking" "message": "Herstel vanuit back-up woorden"
}, },
"required": { "required": {
"message": "Verplicht" "message": "Verplicht"
@ -590,10 +590,10 @@
"message": "Probeer hier opnieuw met een hogere gasprijs" "message": "Probeer hier opnieuw met een hogere gasprijs"
}, },
"revealSeedWords": { "revealSeedWords": {
"message": "Onthul zaadwoorden" "message": "Onthul back-up woorden"
}, },
"revealSeedWordsWarning": { "revealSeedWordsWarning": {
"message": "Herstel je zaadwoorden niet op een openbare plaats! Deze woorden kunnen worden gebruikt om al uw accounts te stelen." "message": "Zorg dat je back-up woorden niet op een openbare plaats bekijkt! Deze woorden kunnen worden gebruikt om al uw accounts opnieuw te genereren (en dus uw account te stelen)."
}, },
"revert": { "revert": {
"message": "terugkeren" "message": "terugkeren"
@ -616,7 +616,7 @@
"description": "Account export proces" "description": "Account export proces"
}, },
"saveSeedAsFile": { "saveSeedAsFile": {
"message": "Bewaar zaadwoorden als bestand" "message": "Bewaar back-up woorden als bestand"
}, },
"search": { "search": {
"message": "Zoeken" "message": "Zoeken"
@ -625,7 +625,7 @@
"message": "Voer hier je geheime twaalfwoordfrase in om je kluis te herstellen." "message": "Voer hier je geheime twaalfwoordfrase in om je kluis te herstellen."
}, },
"seedPhraseReq": { "seedPhraseReq": {
"message": "zaadzinnen zijn 12 woorden lang" "message": "Back-up woorden zijn 12 woorden lang"
}, },
"select": { "select": {
"message": "kiezen" "message": "kiezen"

@ -62,8 +62,8 @@ PendingTx.prototype.render = function () {
const gasBn = hexToBn(gas) const gasBn = hexToBn(gas)
// default to 8MM gas limit // default to 8MM gas limit
const gasLimit = new BN(parseInt(blockGasLimit) || '8000000') const gasLimit = new BN(parseInt(blockGasLimit) || '8000000')
const safeGasLimitBN = this.bnMultiplyByFraction(gasLimit, 19, 20) const safeGasLimitBN = this.bnMultiplyByFraction(gasLimit, 99, 100)
const saferGasLimitBN = this.bnMultiplyByFraction(gasLimit, 18, 20) const saferGasLimitBN = this.bnMultiplyByFraction(gasLimit, 98, 100)
const safeGasLimit = safeGasLimitBN.toString(10) const safeGasLimit = safeGasLimitBN.toString(10)
// Gas Price // Gas Price
@ -311,7 +311,7 @@ PendingTx.prototype.render = function () {
style: { style: {
fontSize: '0.9em', fontSize: '0.9em',
}, },
}, 'Gas limit set dangerously high. Approving this transaction is likely to fail.') }, 'Gas limit set dangerously high. Approving this transaction is liable to fail.')
: null, : null,
]), ]),

@ -14,7 +14,7 @@ describe('Metamask popup page', function () {
const extPath = path.resolve('dist/chrome') const extPath = path.resolve('dist/chrome')
driver = buildWebDriver(extPath) driver = buildWebDriver(extPath)
await driver.get('chrome://extensions-frame') await driver.get('chrome://extensions-frame')
const elems = await driver.findElements(By.className('extension-list-item-wrapper')) const elems = await driver.findElements(By.css('.extension-list-item-wrapper'))
const extensionId = await elems[1].getAttribute('id') const extensionId = await elems[1].getAttribute('id')
await driver.get(`chrome-extension://${extensionId}/popup.html`) await driver.get(`chrome-extension://${extensionId}/popup.html`)
await delay(500) await delay(500)
@ -37,21 +37,19 @@ describe('Metamask popup page', function () {
}) })
it('should show privacy notice', async () => { it('should show privacy notice', async () => {
const privacy = await driver.findElement(By.className( const privacy = await driver.findElement(By.css('.terms-header')).getText()
'terms-header'
)).getText()
assert.equal(privacy, 'PRIVACY NOTICE', 'shows privacy notice') assert.equal(privacy, 'PRIVACY NOTICE', 'shows privacy notice')
driver.findElement(By.css( driver.findElement(By.css(
'button' 'button'
)).click() )).click()
await delay(300)
}) })
it('should show terms of use', async () => { it('should show terms of use', async () => {
await delay(300) await delay(300)
const terms = await driver.findElement(By.className( const terms = await driver.findElement(By.css('.terms-header')).getText()
'terms-header'
)).getText()
assert.equal(terms, 'TERMS OF USE', 'shows terms of use') assert.equal(terms, 'TERMS OF USE', 'shows terms of use')
await delay(300)
}) })
it('should be unable to continue without scolling throught the terms of use', async () => { it('should be unable to continue without scolling throught the terms of use', async () => {
@ -63,6 +61,7 @@ describe('Metamask popup page', function () {
'Attributions' 'Attributions'
)) ))
await driver.executeScript('arguments[0].scrollIntoView(true)', element) await driver.executeScript('arguments[0].scrollIntoView(true)', element)
await delay(300)
}) })
it('should be able to continue when scrolled to the bottom of terms of use', async () => { it('should be able to continue when scrolled to the bottom of terms of use', async () => {
@ -71,10 +70,10 @@ describe('Metamask popup page', function () {
await delay(500) await delay(500)
assert.equal(buttonEnabled, true, 'enabled continue button') assert.equal(buttonEnabled, true, 'enabled continue button')
await button.click() await button.click()
await delay(300)
}) })
it('should accept password with length of eight', async () => { it('should accept password with length of eight', async () => {
await delay(300)
const passwordBox = await driver.findElement(By.id('password-box')) const passwordBox = await driver.findElement(By.id('password-box'))
const passwordBoxConfirm = await driver.findElement(By.id('password-box-confirm')) const passwordBoxConfirm = await driver.findElement(By.id('password-box-confirm'))
const button = driver.findElement(By.css('button')) const button = driver.findElement(By.css('button'))
@ -87,16 +86,16 @@ describe('Metamask popup page', function () {
it('should show value was created and seed phrase', async () => { it('should show value was created and seed phrase', async () => {
await delay(700) await delay(700)
this.seedPhase = await driver.findElement(By.className('twelve-word-phrase')).getText() this.seedPhase = await driver.findElement(By.css('.twelve-word-phrase')).getText()
const continueAfterSeedPhrase = await driver.findElement(By.css('button')) const continueAfterSeedPhrase = await driver.findElement(By.css('button'))
await continueAfterSeedPhrase.click() await continueAfterSeedPhrase.click()
await delay(300)
}) })
it('should show lock account', async () => { it('should show lock account', async () => {
await delay(300) await driver.findElement(By.css('.sandwich-expando')).click()
await driver.findElement(By.className('sandwich-expando')).click()
await delay(500) await delay(500)
await driver.findElement(By.xpath('//*[@id="app-content"]/div/div[3]/span/div/li[2]')).click() await driver.findElement(By.css('#app-content > div > div:nth-child(3) > span > div > li:nth-child(3)')).click()
}) })
it('should accept account password after lock', async () => { it('should accept account password after lock', async () => {
@ -106,16 +105,16 @@ describe('Metamask popup page', function () {
await delay(500) await delay(500)
}) })
it('should show QR code', async () => { it('should show QR code option', async () => {
await delay(300) await delay(300)
await driver.findElement(By.className('fa-ellipsis-h')).click() await driver.findElement(By.css('.fa-ellipsis-h')).click()
await driver.findElement(By.xpath('//*[@id="app-content"]/div/div[4]/div/div/div[1]/flex-column/div[1]/div/span/i/div/div/li[2]')).click() await driver.findElement(By.css('#app-content > div > div.app-primary.from-right > div > div > div:nth-child(1) > flex-column > div.name-label > div > span > i > div > div > li:nth-child(3)')).click()
await delay(300) await delay(300)
}) })
it('should show the account address', async () => { it('should show the account address', async () => {
this.accountAddress = await driver.findElement(By.className('ellip-address')).getText() this.accountAddress = await driver.findElement(By.css('.ellip-address')).getText()
await driver.findElement(By.className('fa-arrow-left')).click() await driver.findElement(By.css('.fa-arrow-left')).click()
await delay(500) await delay(500)
}) })
}) })

Loading…
Cancel
Save