diff --git a/src/App.vue b/src/App.vue index 689fdd53..3b67e952 100644 --- a/src/App.vue +++ b/src/App.vue @@ -92,11 +92,13 @@ export default { store.commit('app/UPDATE_WINDOW_WIDTH', val) }) - store.dispatch('chains/getQuotes') - return { skinClasses, } }, + created() { + store.dispatch('chains/getQuotes') + store.dispatch('chains/getAllIBCDenoms', this) + }, } diff --git a/src/libs/fetch.js b/src/libs/fetch.js index 8ea2bfa2..410f5ad7 100644 --- a/src/libs/fetch.js +++ b/src/libs/fetch.js @@ -325,7 +325,8 @@ export default class ChainFetch { } async getAllIBCDenoms(config = null) { - const sdkVersion = config ? config.sdk_version : this.config.sdk_version + const conf = config || this.getSelectedConfig() + const sdkVersion = conf.sdk_version if (compareVersions(sdkVersion, '0.44.2') < 0) { return this.get('/ibc/applications/transfer/v1beta1/denom_traces?pagination.limit=500', config).then(data => commonProcess(data)) } diff --git a/src/store/chains/index.js b/src/store/chains/index.js index 40c40f38..1e92d8a5 100644 --- a/src/store/chains/index.js +++ b/src/store/chains/index.js @@ -6,6 +6,8 @@ * @LastEditTime: 2021-11-20 15:33:07 */ import { isTestnet } from '@/libs/utils' +import { sha256 } from '@cosmjs/crypto' +import { toHex } from '@cosmjs/encoding' let chains = {} @@ -36,6 +38,8 @@ export default { ibcChannels: {}, quotes: {}, defaultWallet: localStorage.getItem('default-wallet'), + denoms: {}, + ibcPaths: {}, }, getters: { getchains: state => state.chains, @@ -67,6 +71,12 @@ export default { state.chains.defaultWallet = defaultWallet } }, + setIBCDenoms(state, denoms) { + state.denoms = denoms + }, + setIBCPaths(state, paths) { + state.ibcPaths = paths + }, }, actions: { async getQuotes(context) { @@ -74,5 +84,27 @@ export default { context.commit('setQuotes', data) }) }, + + async getAllIBCDenoms(context, _this) { + _this.$http.getAllIBCDenoms().then(x => { + const denomsMap = {} + const pathsMap = {} + x.denom_traces.forEach(trace => { + const hash = toHex(sha256(new TextEncoder().encode(`${trace.path}/${trace.base_denom}`))) + const ibcDenom = `ibc/${hash.toUpperCase()}` + denomsMap[ibcDenom] = trace.base_denom + + const path = trace.path.split('/') + if (path.length >= 2) { + pathsMap[ibcDenom] = { + channel_id: path[path.length - 1], + port_id: path[path.length - 2], + } + } + }) + context.commit('setIBCDenoms', denomsMap) + context.commit('setIBCPaths', pathsMap) + }) + }, }, } diff --git a/src/views/StakingRewardComponent.vue b/src/views/StakingRewardComponent.vue index e90bba72..65d10152 100644 --- a/src/views/StakingRewardComponent.vue +++ b/src/views/StakingRewardComponent.vue @@ -97,8 +97,6 @@ import { BCard, BCardHeader, BCardTitle, BCardBody, BMediaBody, BMedia, BMediaAside, BAvatar, BButton, } from 'bootstrap-vue' -import { sha256 } from '@cosmjs/crypto' -import { toHex } from '@cosmjs/encoding' import { formatToken, numberWithCommas } from '@/libs/utils' import OperationModal from '@/views/components/OperationModal/index.vue' @@ -131,16 +129,12 @@ export default { }, data() { return { - denoms: {}, } }, - created() { - this.$http.getAllIBCDenoms().then(x => { - x.denom_traces.forEach(trace => { - const hash = toHex(sha256(new TextEncoder().encode(`${trace.path}/${trace.base_denom}`))) - this.$set(this.denoms, `ibc/${hash.toUpperCase()}`, trace.base_denom) - }) - }) + computed: { + denoms() { + return this.$store.state.chains.denoms + }, }, methods: { formatNumber(value) { diff --git a/src/views/SummaryAssetsComponent.vue b/src/views/SummaryAssetsComponent.vue index b5b4e613..b605064a 100644 --- a/src/views/SummaryAssetsComponent.vue +++ b/src/views/SummaryAssetsComponent.vue @@ -15,8 +15,6 @@