forked from LaconicNetwork/cosmos-explorer
finish ledger signature
This commit is contained in:
@@ -102,13 +102,20 @@
|
||||
label="Fee"
|
||||
label-for="Fee"
|
||||
>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="fee"
|
||||
>
|
||||
<b-input-group>
|
||||
<b-input-group>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required|integer"
|
||||
name="fee"
|
||||
>
|
||||
<b-form-input v-model="fee" />
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="feeDenom"
|
||||
>
|
||||
<b-form-select
|
||||
v-model="feeDenom"
|
||||
>
|
||||
@@ -120,9 +127,9 @@
|
||||
{{ item.denom }}
|
||||
</b-form-select-option>
|
||||
</b-form-select>
|
||||
</b-input-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -171,12 +178,11 @@
|
||||
>
|
||||
Keplr
|
||||
</b-form-radio>
|
||||
<!-- <b-form-radio
|
||||
<b-form-radio
|
||||
v-model="wallet"
|
||||
name="wallet"
|
||||
value="ledgerUSB"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (USB)
|
||||
</b-form-radio>
|
||||
@@ -185,10 +191,9 @@
|
||||
name="wallet"
|
||||
value="ledgerBle"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (Bluetooth)
|
||||
</b-form-radio> -->
|
||||
</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
@@ -262,7 +267,7 @@ export default {
|
||||
balance: [],
|
||||
delegations: [],
|
||||
memo: '',
|
||||
fee: 800,
|
||||
fee: '800',
|
||||
feeDenom: '',
|
||||
wallet: 'keplr',
|
||||
error: null,
|
||||
|
||||
@@ -117,13 +117,20 @@
|
||||
label="Fee"
|
||||
label-for="Fee"
|
||||
>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="fee"
|
||||
>
|
||||
<b-input-group>
|
||||
<b-input-group>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required|integer"
|
||||
name="fee"
|
||||
>
|
||||
<b-form-input v-model="fee" />
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="feeDenom"
|
||||
>
|
||||
<b-form-select
|
||||
v-model="feeDenom"
|
||||
>
|
||||
@@ -135,9 +142,9 @@
|
||||
{{ item.denom }}
|
||||
</b-form-select-option>
|
||||
</b-form-select>
|
||||
</b-input-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -186,12 +193,11 @@
|
||||
>
|
||||
Keplr
|
||||
</b-form-radio>
|
||||
<!-- <b-form-radio
|
||||
<b-form-radio
|
||||
v-model="wallet"
|
||||
name="wallet"
|
||||
value="ledgerUSB"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (USB)
|
||||
</b-form-radio>
|
||||
@@ -200,10 +206,9 @@
|
||||
name="wallet"
|
||||
value="ledgerBle"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (Bluetooth)
|
||||
</b-form-radio> -->
|
||||
</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
@@ -278,7 +283,7 @@ export default {
|
||||
balance: [],
|
||||
delegations: [],
|
||||
memo: '',
|
||||
fee: 800,
|
||||
fee: '800',
|
||||
feeDenom: '',
|
||||
wallet: 'keplr',
|
||||
error: null,
|
||||
|
||||
@@ -129,13 +129,20 @@
|
||||
label="Fee"
|
||||
label-for="Fee"
|
||||
>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="fee"
|
||||
>
|
||||
<b-input-group>
|
||||
<b-input-group>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required|integer"
|
||||
name="fee"
|
||||
>
|
||||
<b-form-input v-model="fee" />
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="feeDenom"
|
||||
>
|
||||
<b-form-select
|
||||
v-model="feeDenom"
|
||||
>
|
||||
@@ -147,9 +154,9 @@
|
||||
{{ item.denom }}
|
||||
</b-form-select-option>
|
||||
</b-form-select>
|
||||
</b-input-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -198,12 +205,11 @@
|
||||
>
|
||||
Keplr
|
||||
</b-form-radio>
|
||||
<!-- <b-form-radio
|
||||
<b-form-radio
|
||||
v-model="wallet"
|
||||
name="wallet"
|
||||
value="ledgerUSB"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (USB)
|
||||
</b-form-radio>
|
||||
@@ -212,10 +218,9 @@
|
||||
name="wallet"
|
||||
value="ledgerBle"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (Bluetooth)
|
||||
</b-form-radio> -->
|
||||
</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
@@ -283,7 +288,7 @@ export default {
|
||||
amount: null,
|
||||
memo: '',
|
||||
recipient: null,
|
||||
fee: 800,
|
||||
fee: '800',
|
||||
feeDenom: '',
|
||||
wallet: 'keplr',
|
||||
error: null,
|
||||
|
||||
@@ -102,13 +102,20 @@
|
||||
label="Fee"
|
||||
label-for="Fee"
|
||||
>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="fee"
|
||||
>
|
||||
<b-input-group>
|
||||
<b-input-group>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required|integer"
|
||||
name="fee"
|
||||
>
|
||||
<b-form-input v-model="fee" />
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="feeDenom"
|
||||
>
|
||||
<b-form-select
|
||||
v-model="feeDenom"
|
||||
>
|
||||
@@ -120,9 +127,9 @@
|
||||
{{ item.denom }}
|
||||
</b-form-select-option>
|
||||
</b-form-select>
|
||||
</b-input-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -171,12 +178,11 @@
|
||||
>
|
||||
Keplr
|
||||
</b-form-radio>
|
||||
<!-- <b-form-radio
|
||||
<b-form-radio
|
||||
v-model="wallet"
|
||||
name="wallet"
|
||||
value="ledgerUSB"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (USB)
|
||||
</b-form-radio>
|
||||
@@ -185,10 +191,9 @@
|
||||
name="wallet"
|
||||
value="ledgerBle"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (Bluetooth)
|
||||
</b-form-radio> -->
|
||||
</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
@@ -262,7 +267,7 @@ export default {
|
||||
balance: [],
|
||||
delegations: [],
|
||||
memo: '',
|
||||
fee: 800,
|
||||
fee: '800',
|
||||
feeDenom: '',
|
||||
wallet: 'keplr',
|
||||
error: null,
|
||||
|
||||
@@ -92,13 +92,20 @@
|
||||
label="Fee"
|
||||
label-for="Fee"
|
||||
>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="fee"
|
||||
>
|
||||
<b-input-group>
|
||||
<b-input-group>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required|integer"
|
||||
name="fee"
|
||||
>
|
||||
<b-form-input v-model="fee" />
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="feeDenom"
|
||||
>
|
||||
<b-form-select
|
||||
v-model="feeDenom"
|
||||
>
|
||||
@@ -110,9 +117,9 @@
|
||||
{{ item.denom }}
|
||||
</b-form-select-option>
|
||||
</b-form-select>
|
||||
</b-input-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -161,12 +168,11 @@
|
||||
>
|
||||
Keplr
|
||||
</b-form-radio>
|
||||
<!-- <b-form-radio
|
||||
<b-form-radio
|
||||
v-model="wallet"
|
||||
name="wallet"
|
||||
value="ledgerUSB"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (USB)
|
||||
</b-form-radio>
|
||||
@@ -175,10 +181,9 @@
|
||||
name="wallet"
|
||||
value="ledgerBle"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (Bluetooth)
|
||||
</b-form-radio> -->
|
||||
</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
@@ -248,7 +253,7 @@ export default {
|
||||
selectedChain: '',
|
||||
balance: [],
|
||||
memo: '',
|
||||
fee: null,
|
||||
fee: '',
|
||||
feeDenom: '',
|
||||
wallet: 'keplr',
|
||||
error: null,
|
||||
|
||||
@@ -44,13 +44,20 @@
|
||||
label="Fee"
|
||||
label-for="Fee"
|
||||
>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="fee"
|
||||
>
|
||||
<b-input-group>
|
||||
<b-input-group>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required|integer"
|
||||
name="fee"
|
||||
>
|
||||
<b-form-input v-model="fee" />
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="feeDenom"
|
||||
>
|
||||
<b-form-select
|
||||
v-model="feeDenom"
|
||||
>
|
||||
@@ -62,9 +69,9 @@
|
||||
{{ item.denom }}
|
||||
</b-form-select-option>
|
||||
</b-form-select>
|
||||
</b-input-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -113,12 +120,11 @@
|
||||
>
|
||||
Keplr
|
||||
</b-form-radio>
|
||||
<!-- <b-form-radio
|
||||
<b-form-radio
|
||||
v-model="wallet"
|
||||
name="wallet"
|
||||
value="ledgerUSB"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (USB)
|
||||
</b-form-radio>
|
||||
@@ -127,10 +133,9 @@
|
||||
name="wallet"
|
||||
value="ledgerBle"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (Bluetooth)
|
||||
</b-form-radio> -->
|
||||
</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
@@ -199,7 +204,7 @@ export default {
|
||||
balance: [],
|
||||
delegations: [],
|
||||
memo: '',
|
||||
fee: 800,
|
||||
fee: '800',
|
||||
feeDenom: '',
|
||||
wallet: 'keplr',
|
||||
error: null,
|
||||
|
||||
@@ -44,13 +44,20 @@
|
||||
label="Fee"
|
||||
label-for="Fee"
|
||||
>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="fee"
|
||||
>
|
||||
<b-input-group>
|
||||
<b-input-group>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required|integer"
|
||||
name="fee"
|
||||
>
|
||||
<b-form-input v-model="fee" />
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<validation-provider
|
||||
v-slot="{ errors }"
|
||||
rules="required"
|
||||
name="feeDenom"
|
||||
>
|
||||
<b-form-select
|
||||
v-model="feeDenom"
|
||||
>
|
||||
@@ -62,9 +69,9 @@
|
||||
{{ item.denom }}
|
||||
</b-form-select-option>
|
||||
</b-form-select>
|
||||
</b-input-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -113,12 +120,11 @@
|
||||
>
|
||||
Keplr
|
||||
</b-form-radio>
|
||||
<!-- <b-form-radio
|
||||
<b-form-radio
|
||||
v-model="wallet"
|
||||
name="wallet"
|
||||
value="ledgerUSB"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (USB)
|
||||
</b-form-radio>
|
||||
@@ -127,10 +133,9 @@
|
||||
name="wallet"
|
||||
value="ledgerBle"
|
||||
class="mb-1 mt-1"
|
||||
disabled
|
||||
>
|
||||
Ledger (Bluetooth)
|
||||
</b-form-radio> -->
|
||||
</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
@@ -154,7 +159,7 @@ import {
|
||||
required, email, url, between, alpha, integer, password, min, digits, alphaDash, length,
|
||||
} from '@validations'
|
||||
import {
|
||||
formatToken, getLocalAccounts, getLocalChains, setLocalTxHistory, sign, timeIn,
|
||||
formatToken, getLocalAccounts, getLocalChains, sign, timeIn, setLocalTxHistory,
|
||||
} from '@/libs/data'
|
||||
import chainAPI from '@/libs/fetch'
|
||||
import ToastificationContent from '@core/components/toastification/ToastificationContent.vue'
|
||||
@@ -195,7 +200,7 @@ export default {
|
||||
balance: [],
|
||||
delegations: [],
|
||||
memo: '',
|
||||
fee: 800,
|
||||
fee: '800',
|
||||
feeDenom: '',
|
||||
wallet: 'keplr',
|
||||
error: null,
|
||||
|
||||
@@ -100,7 +100,9 @@
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
|
||||
<b-card>
|
||||
<b-card
|
||||
v-if="delegations"
|
||||
>
|
||||
<b-card-header class="pt-0 pl-0 pr-0">
|
||||
<b-card-title>Delegation</b-card-title>
|
||||
<div>
|
||||
|
||||
@@ -79,6 +79,29 @@
|
||||
</validation-provider>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col
|
||||
v-if="device.startsWith('ledger')"
|
||||
md="12"
|
||||
>
|
||||
<b-form-group
|
||||
label="HD Path"
|
||||
label-for="hdpath"
|
||||
>
|
||||
<validation-provider
|
||||
#default="{ errors }"
|
||||
name="HD Path"
|
||||
rules="required"
|
||||
>
|
||||
<b-form-input
|
||||
v-model="hdpath"
|
||||
class="mt-1"
|
||||
name="hdpath"
|
||||
placeholder="m/44'/118/0'/0/0"
|
||||
/>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</validation-observer>
|
||||
</tab-content>
|
||||
@@ -113,6 +136,29 @@
|
||||
</validation-provider>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col
|
||||
v-if="accounts"
|
||||
md="12"
|
||||
>
|
||||
<b-form-group
|
||||
label="Public Key"
|
||||
label-for="ir"
|
||||
>
|
||||
<validation-provider
|
||||
#default="{ errors }"
|
||||
name="Public Key"
|
||||
rules="required"
|
||||
>
|
||||
<b-form-input
|
||||
id="ir"
|
||||
:value="formatPubkey(accounts.pubkey)"
|
||||
readonly
|
||||
:state="errors.length > 0 ? false:null"
|
||||
/>
|
||||
<small class="text-danger">{{ errors[0] }}</small>
|
||||
</validation-provider>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col md="12">
|
||||
<b-form-group
|
||||
label="Import Address For Chains:"
|
||||
@@ -216,6 +262,7 @@ import {
|
||||
import { required } from '@validations'
|
||||
import store from '@/store'
|
||||
import { addressDecode, addressEnCode, getLedgerAddress } from '@/libs/data'
|
||||
import { toHex } from '@cosmjs/encoding'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -241,6 +288,7 @@ export default {
|
||||
debug: '',
|
||||
device: 'keplr',
|
||||
address: '',
|
||||
hdpath: "m/44'/118/0'/0/0",
|
||||
name: '',
|
||||
options: {},
|
||||
required,
|
||||
@@ -255,13 +303,17 @@ export default {
|
||||
},
|
||||
|
||||
addresses() {
|
||||
if (!this.accounts) return []
|
||||
const { data } = addressDecode(this.accounts.address)
|
||||
return this.selected.map(x => {
|
||||
const { logo, addr_prefix } = this.chains[x]
|
||||
const addr = addressEnCode(addr_prefix, data)
|
||||
return { chain: x, addr, logo }
|
||||
})
|
||||
if (this.accounts && this.accounts.address) {
|
||||
const { data } = addressDecode(this.accounts.address)
|
||||
return this.selected.map(x => {
|
||||
const { logo, addr_prefix } = this.chains[x]
|
||||
const addr = addressEnCode(addr_prefix, data)
|
||||
return {
|
||||
chain: x, addr, logo, hdpath: this.hdpath,
|
||||
}
|
||||
})
|
||||
}
|
||||
return []
|
||||
},
|
||||
},
|
||||
created() {
|
||||
@@ -271,11 +323,18 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatPubkey(v) {
|
||||
if (typeof (v) === 'string') {
|
||||
return v
|
||||
}
|
||||
if (v) {
|
||||
return toHex(v)
|
||||
}
|
||||
return ''
|
||||
},
|
||||
async connect() {
|
||||
const transport = this.device === 'ledger' ? 'usb' : 'bluetooth'
|
||||
return getLedgerAddress(transport).catch(e => {
|
||||
this.debug = e
|
||||
})
|
||||
return getLedgerAddress(transport, this.hdpath)
|
||||
},
|
||||
async cennectKeplr() {
|
||||
if (!window.getOfflineSigner || !window.keplr) {
|
||||
@@ -338,12 +397,12 @@ export default {
|
||||
case 'ledger2':
|
||||
await this.connect().then(accounts => {
|
||||
if (accounts) {
|
||||
this.accounts = {
|
||||
address: accounts.bech32_address,
|
||||
pubkey: accounts.compressed_pk,
|
||||
}
|
||||
// eslint-disable-next-line prefer-destructuring
|
||||
this.accounts = accounts[0]
|
||||
ok = true
|
||||
}
|
||||
}).catch(e => {
|
||||
this.debug = e
|
||||
})
|
||||
break
|
||||
default:
|
||||
|
||||
@@ -254,9 +254,14 @@ export default {
|
||||
return 0
|
||||
},
|
||||
removeAddress(v) {
|
||||
Object.values(this.accounts).forEach(item => {
|
||||
Object.keys(this.accounts).forEach(key => {
|
||||
const item = this.accounts[key]
|
||||
const newAddrs = item.address.filter(a => a.addr !== v)
|
||||
this.$set(item, 'address', newAddrs)
|
||||
if (newAddrs.length > 0) {
|
||||
this.$set(item, 'address', newAddrs)
|
||||
} else {
|
||||
delete this.accounts[key]
|
||||
}
|
||||
})
|
||||
localStorage.setItem('accounts', JSON.stringify(this.accounts))
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user