forked from cerc-io/cosmos-explorer
Refactor Wallet
This commit is contained in:
parent
d137f6dec9
commit
5f7c5e309a
@ -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 {
|
||||||
|
@ -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"
|
||||||
|
@ -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: [
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
@ -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
|
Loading…
Reference in New Issue
Block a user