Refactor Wallet

This commit is contained in:
liangping 2021-09-16 09:53:52 +08:00
parent d137f6dec9
commit 5f7c5e309a
13 changed files with 101 additions and 76 deletions

View File

@ -22,7 +22,7 @@
display: none; display: none;
} }
.wizard-nav { .wizard-nav {
padding: 1.42rem 1.42rem 2.14rem 1.42rem; padding: 1.0rem 1.0rem 1.14rem 1.0rem;
border-bottom: 1px solid rgba($color: $black, $alpha: 0.08); border-bottom: 1px solid rgba($color: $black, $alpha: 0.08);
padding-bottom: 0; padding-bottom: 0;
li { li {

View File

@ -68,7 +68,8 @@
class="btn-icon" class="btn-icon"
:to="{ name: 'accounts' }" :to="{ name: 'accounts' }"
> >
<feather-icon icon="UserIcon" /> <feather-icon icon="KeyIcon" />
<span class="align-middle ml-25">Wallet</span>
</b-button> </b-button>
<!-- <b-dropdown <!-- <b-dropdown
class="ml-1" class="ml-1"

View File

@ -27,9 +27,9 @@ const router = new VueRouter({
}, },
}, },
{ {
path: '/user/setting', path: '/wallet/setting',
name: 'setting', name: 'setting',
component: () => import('@/views/UserSetting.vue'), component: () => import('@/views/WalletSetting.vue'),
meta: { meta: {
pageTitle: 'Setting', pageTitle: 'Setting',
breadcrumb: [ breadcrumb: [
@ -41,9 +41,9 @@ const router = new VueRouter({
}, },
}, },
{ {
path: '/user/portfolio', path: '/wallet/portfolio',
name: 'portfolio', name: 'portfolio',
component: () => import('@/views/UserPortfolio.vue'), component: () => import('@/views/WalletPortfolio.vue'),
meta: { meta: {
pageTitle: 'Portfolio', pageTitle: 'Portfolio',
breadcrumb: [ breadcrumb: [
@ -55,9 +55,9 @@ const router = new VueRouter({
}, },
}, },
{ {
path: '/user/accounts', path: '/wallet/accounts',
name: 'accounts', name: 'accounts',
component: () => import('@/views/UserAccounts.vue'), component: () => import('@/views/WalletAccounts.vue'),
meta: { meta: {
pageTitle: 'Accounts', pageTitle: 'Accounts',
breadcrumb: [ breadcrumb: [
@ -69,9 +69,23 @@ const router = new VueRouter({
}, },
}, },
{ {
path: '/user/address', path: '/wallet/import',
name: 'accounts-import',
component: () => import('@/views/WalletAccountImportAddress.vue'),
meta: {
pageTitle: 'Accounts',
breadcrumb: [
{
text: 'Import',
active: true,
},
],
},
},
{
path: '/wallet/address',
name: 'addresses', name: 'addresses',
component: () => import('@/views/UserAddressBook.vue'), component: () => import('@/views/WalletAddressBook.vue'),
meta: { meta: {
pageTitle: 'Address Book', pageTitle: 'Address Book',
breadcrumb: [ breadcrumb: [
@ -101,7 +115,7 @@ const router = new VueRouter({
{ {
path: '/:chain/account/:address', path: '/:chain/account/:address',
name: 'chain-account', name: 'chain-account',
component: () => import('@/views/UserAccountDetail.vue'), component: () => import('@/views/WalletAccountDetail.vue'),
meta: { meta: {
pageTitle: 'Accounts', pageTitle: 'Accounts',
breadcrumb: [ breadcrumb: [

View File

@ -189,14 +189,14 @@
</router-link> </router-link>
</template> </template>
</b-table> </b-table>
<b-card <div
v-if="next" v-if="next"
class="addzone text-center" class="addzone text-center pt-50 pb-50 bg-transparent text-primary"
@click="loadVotes()" @click="loadVotes()"
> >
<feather-icon icon="PlusIcon" /> <feather-icon icon="PlusIcon" />
Load More Votes Load More Votes
</b-card> </div>
</b-card-body> </b-card-body>
</b-card> </b-card>
<b-card no-body> <b-card no-body>

View File

@ -241,7 +241,7 @@
</b-form> </b-form>
<b-button <b-button
v-else v-else
to="/user/accounts" to="/wallet/import"
variant="primary" variant="primary"
> >
Connect Wallet Connect Wallet

View File

@ -438,7 +438,7 @@ export default {
const signerData = { const signerData = {
accountNumber: this.accountNumber, accountNumber: this.accountNumber,
sequence: this.sequence, sequence: String(Number(this.sequence) + 1),
chainId: this.chainId, chainId: this.chainId,
} }

View File

@ -38,7 +38,7 @@
placeholder="Select an address" placeholder="Select an address"
@change="onChange" @change="onChange"
/> />
<small class="text-danger">{{ errors[0] }} <strong v-if="!accounts">Please import an account first!</strong> </small> <small class="text-danger">{{ errors[0] }} <strong v-if="!accounts || accounts.length === 0">Please import an account first!</strong> </small>
</validation-provider> </validation-provider>
</b-form-group> </b-form-group>
</b-col> </b-col>
@ -93,39 +93,58 @@
label="Fee" label="Fee"
label-for="Fee" label-for="Fee"
> >
<b-input-group>
<validation-provider <validation-provider
v-slot="{ errors }" v-slot="{ errors }"
rules="required|integer" rules="required|integer"
name="fee" name="fee"
> >
<b-input-group>
<b-form-input v-model="fee" /> <b-form-input v-model="fee" />
<small class="text-danger">{{ errors[0] }}</small> <b-input-group-append>
</validation-provider>
<validation-provider
v-slot="{ errors }"
rules="required"
name="feeDenom"
>
<b-form-select <b-form-select
v-model="feeDenom" v-model="feeDenom"
> :options="feeDenoms"
<b-form-select-option value-field="denom"
v-for="item in feeDenoms" text-field="denom"
:key="item.denom" />
:value="item.denom" </b-input-group-append>
> </b-input-group>
{{ item.denom }}
</b-form-select-option>
</b-form-select>
<small class="text-danger">{{ errors[0] }}</small> <small class="text-danger">{{ errors[0] }}</small>
</validation-provider> </validation-provider>
</b-input-group> </b-form-group>
</b-col>
<b-col cols="12">
<b-form-group>
<b-form-checkbox
v-model="advance"
name="advance"
value="true"
>
<small>Advance</small>
</b-form-checkbox>
</b-form-group> </b-form-group>
</b-col> </b-col>
</b-row> </b-row>
<b-row> <b-row v-if="advance">
<b-col> <b-col cols="12">
<b-form-group
label="Gas"
label-for="gas"
>
<validation-provider
v-slot="{ errors }"
name="gas"
>
<b-form-input
id="gas"
v-model="gas"
type="number"
/>
<small class="text-danger">{{ errors[0] }}</small>
</validation-provider>
</b-form-group>
</b-col>
<b-col cols="12">
<b-form-group <b-form-group
label="Memo" label="Memo"
label-for="Memo" label-for="Memo"
@ -200,8 +219,8 @@
<script> <script>
import { ValidationProvider, ValidationObserver } from 'vee-validate' import { ValidationProvider, ValidationObserver } from 'vee-validate'
import { import {
BModal, BRow, BCol, BInputGroup, BFormInput, BFormGroup, BFormSelect, BFormSelectOption, BModal, BRow, BCol, BInputGroup, BFormInput, BFormGroup, BFormSelect, BFormCheckbox,
BForm, BFormRadioGroup, BFormRadio, BForm, BFormRadioGroup, BFormRadio, BInputGroupAppend,
} from 'bootstrap-vue' } from 'bootstrap-vue'
import { import {
required, email, url, between, alpha, integer, password, min, digits, alphaDash, length, required, email, url, between, alpha, integer, password, min, digits, alphaDash, length,
@ -223,9 +242,10 @@ export default {
BFormInput, BFormInput,
BFormGroup, BFormGroup,
BFormSelect, BFormSelect,
BFormSelectOption,
BFormRadioGroup, BFormRadioGroup,
BFormRadio, BFormRadio,
BFormCheckbox,
BInputGroupAppend,
ValidationProvider, ValidationProvider,
ValidationObserver, ValidationObserver,
@ -258,6 +278,7 @@ export default {
sequence: 1, sequence: 1,
accountNumber: 0, accountNumber: 0,
gas: '200000', gas: '200000',
advance: false,
required, required,
password, password,

View File

@ -5,7 +5,7 @@
:title="null" :title="null"
:subtitle="null" :subtitle="null"
shape="square" shape="square"
finish-button-text="Submit" finish-button-text="Save"
back-button-text="Previous" back-button-text="Previous"
class="steps-transparent mb-3 md" class="steps-transparent mb-3 md"
@on-complete="formSubmitted" @on-complete="formSubmitted"
@ -130,7 +130,7 @@
id="account_name" id="account_name"
v-model="name" v-model="name"
:state="errors.length > 0 ? false:null" :state="errors.length > 0 ? false:null"
placeholder="Keplr" placeholder="Ping Nano X"
/> />
<small class="text-danger">{{ errors[0] }}</small> <small class="text-danger">{{ errors[0] }}</small>
</validation-provider> </validation-provider>
@ -294,14 +294,17 @@ export default {
required, required,
selected: [], selected: [],
accounts: null, accounts: null,
exludes: ['desmos', 'crypto'], // HD Path is NOT supported,
} }
}, },
computed: { computed: {
chains() { chains() {
const config = JSON.parse(localStorage.getItem('chains')) const config = JSON.parse(localStorage.getItem('chains'))
this.exludes.forEach(x => {
delete config[x]
})
return config return config
}, },
addresses() { addresses() {
if (this.accounts && this.accounts.address) { if (this.accounts && this.accounts.address) {
const { data } = addressDecode(this.accounts.address) const { data } = addressDecode(this.accounts.address)
@ -318,7 +321,8 @@ export default {
}, },
created() { created() {
const { selected } = store.state.chains const { selected } = store.state.chains
if (selected && selected.chain_name) { if (selected && selected.chain_name && !this.exludes.includes(selected.chain_name)) {
console.log(this.exludes, selected.chain_name, this.exludes.includes(selected.chain_name))
this.selected.push(selected.chain_name) this.selected.push(selected.chain_name)
} }
}, },
@ -371,7 +375,6 @@ export default {
} }
localStorage.setItem('accounts', JSON.stringify(accounts)) localStorage.setItem('accounts', JSON.stringify(accounts))
this.$parent.$parent.$parent.completeAdd()
this.$toast({ this.$toast({
component: ToastificationContent, component: ToastificationContent,
props: { props: {
@ -380,6 +383,8 @@ export default {
variant: 'success', variant: 'success',
}, },
}) })
this.$router.push('./accounts')
}, },
async validationFormDevice() { async validationFormDevice() {
let ok = false let ok = false

View File

@ -115,26 +115,12 @@
</b-tab> </b-tab>
</b-tabs> </b-tabs>
<b-card <router-link to="./import">
v-b-modal.add-account <b-card class="addzone">
class="addzone"
>
<feather-icon icon="PlusIcon" /> <feather-icon icon="PlusIcon" />
Connect Wallet Connect Wallet
</b-card> </b-card>
<!-- modal add accout --> </router-link>
<b-modal
id="add-account"
centered
size="lg"
title="Connect Wallet"
hide-footer
hide-header-close
cancel-disabled
scrollable
>
<user-account-import-address />
</b-modal>
<operation-transfer-component <operation-transfer-component
:address.sync="selectedAddress" :address.sync="selectedAddress"
/> />
@ -152,7 +138,6 @@ import {
formatTokenAmount, formatTokenDenom, getLocalAccounts, getLocalChains, formatTokenAmount, formatTokenDenom, getLocalAccounts, getLocalChains,
} from '@/libs/data' } from '@/libs/data'
import ToastificationContent from '@core/components/toastification/ToastificationContent.vue' import ToastificationContent from '@core/components/toastification/ToastificationContent.vue'
import UserAccountImportAddress from './UserAccountImportAddress.vue'
import OperationTransferComponent from './OperationTransferComponent.vue' import OperationTransferComponent from './OperationTransferComponent.vue'
export default { export default {
@ -168,7 +153,6 @@ export default {
BCardTitle, BCardTitle,
BDropdown, BDropdown,
BDropdownItem, BDropdownItem,
UserAccountImportAddress,
FeatherIcon, FeatherIcon,
OperationTransferComponent, OperationTransferComponent,
// eslint-disable-next-line vue/no-unused-components // eslint-disable-next-line vue/no-unused-components