From 247fa2cc510e72bc5cc57596c61c42d77ca77b8e Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Tue, 7 Aug 2018 02:16:12 -0230 Subject: [PATCH 1/3] Fix casing of 1Password --- mascara/src/app/first-time/seed-screen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mascara/src/app/first-time/seed-screen.js b/mascara/src/app/first-time/seed-screen.js index d004be77b..81a9a7d19 100644 --- a/mascara/src/app/first-time/seed-screen.js +++ b/mascara/src/app/first-time/seed-screen.js @@ -111,7 +111,7 @@ class BackupPhraseScreen extends Component {
Tips:
- Store this phrase in a password manager like 1password. + Store this phrase in a password manager like 1Password.
Write this phrase on a piece of paper and store in a secure location. If you want even more security, write it down on multiple pieces of paper and store each in 2 - 3 different locations. From b83a746e4fce9c57c81128cfe35b28e9386a557f Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Tue, 7 Aug 2018 02:27:32 -0230 Subject: [PATCH 2/3] Add exportAsFile optional type argument --- ui/app/util.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/app/util.js b/ui/app/util.js index 8b194e0c7..ade4fec8a 100644 --- a/ui/app/util.js +++ b/ui/app/util.js @@ -271,9 +271,9 @@ function getContractAtAddress (tokenAddress) { return global.eth.contract(abi).at(tokenAddress) } -function exportAsFile (filename, data) { +function exportAsFile (filename, data, type = 'text/csv') { // source: https://stackoverflow.com/a/33542499 by Ludovic Feltz - const blob = new Blob([data], {type: 'text/csv'}) + const blob = new Blob([data], {type}) if (window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveBlob(blob, filename) } else { From 4dadeb9a314dc9f61c00e5695ea608aa58f150b7 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Tue, 7 Aug 2018 02:27:53 -0230 Subject: [PATCH 3/3] Add link to download seed words in new UI --- mascara/src/app/first-time/index.css | 13 +++++++++++++ mascara/src/app/first-time/seed-screen.js | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/mascara/src/app/first-time/index.css b/mascara/src/app/first-time/index.css index 09e7d378d..2d05a48b8 100644 --- a/mascara/src/app/first-time/index.css +++ b/mascara/src/app/first-time/index.css @@ -340,6 +340,19 @@ min-width: 0; } +.backup-phrase__tips-text--link { + color: #2f9ae0; + cursor: pointer; +} + +.backup-phrase__tips-text--link:hover { + color: #2f9ae0; +} + +.backup-phrase__tips-text--strong { + font-weight: bold; +} + @media only screen and (max-width: 768px) { .backup-phrase__content-wrapper { flex-direction: column; diff --git a/mascara/src/app/first-time/seed-screen.js b/mascara/src/app/first-time/seed-screen.js index 81a9a7d19..97d5d7930 100644 --- a/mascara/src/app/first-time/seed-screen.js +++ b/mascara/src/app/first-time/seed-screen.js @@ -5,6 +5,7 @@ import classnames from 'classnames' import { withRouter } from 'react-router-dom' import { compose } from 'recompose' import Identicon from '../../../../ui/app/components/identicon' +import {exportAsFile} from '../../../../ui/app/util' import Breadcrumbs from './breadcrumbs' import LoadingScreen from './loading-screen' import { DEFAULT_ROUTE, INITIALIZE_CONFIRM_SEED_ROUTE } from '../../../../ui/app/routes' @@ -65,6 +66,12 @@ class BackupPhraseScreen extends Component { } } + exportSeedWords = () => { + const { seedWords } = this.props + + exportAsFile('MetaMask Secret Backup Phrase', seedWords, 'text/plain') + } + renderSecretWordsContainer () { const { isShowingSecret } = this.state @@ -119,6 +126,13 @@ class BackupPhraseScreen extends Component {
Memorize this phrase.
+
+ + + Download this Secret Backup Phrase + + and keep it stored safely on an external encrypted hard drive or storage medium. +