From 417e00dcecd2c996c74eccfaeb015df909b100d2 Mon Sep 17 00:00:00 2001 From: Zhiting Lin Date: Wed, 29 Jul 2020 11:14:36 +0800 Subject: [PATCH] update verify mnemonic logic --- src/components/backButton/button.vue | 8 ++++++-- src/models/account.js | 9 +++++++++ src/popup.js | 8 ++++++-- src/store/actions.js | 4 +--- src/store/store.js | 2 +- src/utils/Keychain.js | 7 +++++++ src/views/welcome/creation.vue | 4 +--- src/views/welcome/mnemonic.vue | 4 ++-- src/views/welcome/verifyMnemonic.vue | 11 +++++++---- 9 files changed, 40 insertions(+), 17 deletions(-) diff --git a/src/components/backButton/button.vue b/src/components/backButton/button.vue index cf46f1c..3359ae8 100644 --- a/src/components/backButton/button.vue +++ b/src/components/backButton/button.vue @@ -1,15 +1,19 @@ diff --git a/src/models/account.js b/src/models/account.js index d435b83..7114bbb 100644 --- a/src/models/account.js +++ b/src/models/account.js @@ -14,11 +14,20 @@ account.create = function(accountAlias, keyAlias, passwd, context) { } const _bytom = context.bytom.clone(); + + const accountObject = _bytom.keychain.pairs[accountAlias] + if(accountObject && accountObject.vMnemonic){ + reject('Alias already exist, please use another alias.') + } + + _bytom.keychain.removeUnverifyIdentity(); + const res = bytom.keys.createKey(keyAlias, passwd) bytom.accounts.createNewAccount(res.xpub).then(ret => { let resultObj = Object.assign(res, ret) resultObj.alias = accountAlias resultObj.keyAlias = keyAlias + resultObj.vMnemonic = false _bytom.keychain.pairs[accountAlias] = resultObj _bytom.currentAccount = resultObj diff --git a/src/popup.js b/src/popup.js index 4455162..a22227f 100644 --- a/src/popup.js +++ b/src/popup.js @@ -63,12 +63,16 @@ store.dispatch(Actions.LOAD_BYTOM).then(() => { const router = new VueRouter(RouterConfig) router.beforeEach((to, from, next) => { // wallet init - if (store.getters.login == undefined && to.name == 'home') { + + if (!(store.getters.currentAccount) && to.name == 'home') { next({ name: 'welcome' }) return + }else if (!(store.getters.currentAccount && store.getters.vMnemonic) && to.name == 'home') { + next({ name: 'welcome-verify-mnemonic' }) + return } - next() + next() }) new Vue({ el: '#app', diff --git a/src/store/actions.js b/src/store/actions.js index 0008588..99c5fb2 100644 --- a/src/store/actions.js +++ b/src/store/actions.js @@ -42,7 +42,6 @@ export const actions = { bytom.currentAccount={} } - bytom.settings.login = true bytom.settings.currency = "inCny" bytom.settings.netType = '' dispatch(Actions.UPDATE_STORED_BYTOM, bytom).then(_bytom => { @@ -59,10 +58,9 @@ export const actions = { const bytom = Bytom.fromJson(state.bytom); bytom.settings.network = network; account.setupNet(`${network}`) - bytom.settings.login = true const language = bytom.settings.language - + bytom.settings.currency = language ==='en'?'inUsd':"inCny" bytom.settings.netType = '' dispatch(Actions.UPDATE_STORED_BYTOM, bytom).then(_bytom => { diff --git a/src/store/store.js b/src/store/store.js index e85c520..5dc90f2 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -24,7 +24,7 @@ const getters = { net:state => state.bytom.settings.network, netType:state => state.bytom.settings.netType, language:state => state.bytom.settings.language, - login:state => state.bytom.settings.login, + vMnemonic:state => state.bytom.currentAccount.vMnemonic, currency:state => state.bytom.settings.currency, pairs: state => state.bytom.keychain.pairs, diff --git a/src/utils/Keychain.js b/src/utils/Keychain.js index f8bbe32..b07a97f 100644 --- a/src/utils/Keychain.js +++ b/src/utils/Keychain.js @@ -12,4 +12,11 @@ export default class Keychain { } findIdentity(publicKey){ return Object.values(this.pairs).find(id => id.xpub === publicKey); } + + removeUnverifyIdentity(){ + const pairObject = Object.values(this.pairs).filter(id => !id.vMnemonic ); + for(let o of pairObject){ + delete this.pairs[o.alias]; + } + } } diff --git a/src/views/welcome/creation.vue b/src/views/welcome/creation.vue index a8c5e50..6f832da 100644 --- a/src/views/welcome/creation.vue +++ b/src/views/welcome/creation.vue @@ -106,7 +106,7 @@
- +

{{ $t('createAccount.title')}}

@@ -293,11 +293,9 @@ export default { onCancel: this.onCancel }); account.create(this.formItem.accAlias, null, this.formItem.passwd1, this).then(currentAccount => { - this[Actions.CREATE_NEW_BYTOM](this.selected.value).then(() =>{ loader.hide(); this.formItem = {}; this.$router.push('/mnemonic'); - }); }).catch(err => { loader.hide(); this.$toast.error( diff --git a/src/views/welcome/mnemonic.vue b/src/views/welcome/mnemonic.vue index 60ba584..9beae53 100644 --- a/src/views/welcome/mnemonic.vue +++ b/src/views/welcome/mnemonic.vue @@ -65,7 +65,7 @@
- +

{{ $t('mnemonic.title')}}

@@ -75,7 +75,7 @@

{{ $t('mnemonic.hint')}}

- {{ n }} + {{ n }} 
diff --git a/src/views/welcome/verifyMnemonic.vue b/src/views/welcome/verifyMnemonic.vue index 0c47181..ec10aa7 100644 --- a/src/views/welcome/verifyMnemonic.vue +++ b/src/views/welcome/verifyMnemonic.vue @@ -51,7 +51,7 @@
- +

{{ $t('verifyMnemonic.title')}}

@@ -153,12 +153,15 @@ export default { return; } - this.$router.push('/'); + const bytom = this.bytom.clone(); + bytom.currentAccount.vMnemonic = true; + bytom.keychain.pairs[bytom.currentAccount.alias].vMnemonic = true; + this[Actions.UPDATE_STORED_BYTOM](bytom).then(()=>{ + this.$router.push('/') + }) } }, ...mapActions([ - Actions.CREATE_NEW_BYTOM, - Actions.IMPORT_BYTOM, Actions.UPDATE_STORED_BYTOM ]) } -- 2.11.0