classic-ui/modules/account/components/Setup/Actions.vue
Danil Kovtonyuk 44f31f8b9f
init
2022-04-22 13:14:19 +10:00

95 lines
2.8 KiB
Vue

<template>
<div class="action">
<div class="action-item">
<b-icon icon="account-setup" size="is-large" />
<div class="desc">
{{ $t('account.setup.desc') }}
</div>
<b-tooltip :active="isAccountDisabled" :label="$t(setupAccountTooltip)" multilined size="is-large">
<b-button :disabled="isAccountDisabled" outlined type="is-primary" @click="showSetupModal">{{
$t('account.setup.account')
}}</b-button>
</b-tooltip>
</div>
<div class="action-item">
<b-icon icon="account-recover" size="is-large" />
<div class="desc">
{{ $t('account.setup.recoverDesc') }}
</div>
<b-tooltip :active="isRecoverDisabled" :label="$t(recoverAccountTooltip)" multilined size="is-large">
<b-button type="is-primary" outlined :disabled="isRecoverDisabled" @click="handleRecoverAccount">
{{ $t('account.setup.recover') }}
</b-button>
</b-tooltip>
</div>
<div class="action-item">
<b-icon icon="account-raw" size="is-large" />
<div class="desc">
{{ $t('account.setup.enterRawDesc') }}
</div>
<b-button type="is-primary" outlined @click="showRecoverKeyModal">{{
$t('account.setup.enterRaw')
}}</b-button>
</div>
</div>
</template>
<script>
import { setupComputed, setupMethods } from '../../injectors'
import { openDecryptModal, openRecoverAccountModal, openSetupAccountModal } from '../../modals'
export default {
computed: {
...setupComputed,
isAccountDisabled() {
return this.isExistAccount || !this.isLoggedIn
},
isRecoverDisabled() {
return !this.isExistAccount || !this.isLoggedIn || this.isPartialSupport
},
recoverAccountTooltip() {
if (this.isPartialSupport) {
return 'mobileWallet.actions.disabled'
}
return this.isLoggedIn ? 'account.setup.recTooltip' : 'connectYourWalletFirst'
},
setupAccountTooltip() {
return this.isLoggedIn ? 'account.setup.setTooltip' : 'connectYourWalletFirst'
}
},
methods: {
...setupMethods,
async getEncryptedNotes() {
const props = await this.decryptNotes()
if (props) {
openDecryptModal({ ...props, parent: this })
}
},
showRecoverKeyModal() {
openRecoverAccountModal({ parent: this, getNotes: this.getEncryptedNotes })
},
showSetupModal() {
openSetupAccountModal({ parent: this })
},
async handleRecoverAccount() {
try {
this.enable({ message: this.$t('account.setup.decrypt') })
await this.recoverAccountFromChain()
await this.getEncryptedNotes()
} catch {
this.addNoticeWithInterval({
notice: {
title: 'decryptFailed',
type: 'danger'
},
interval: 5000
})
} finally {
this.disable()
}
}
}
}
</script>