diff --git a/chains/mainnet/desmos.json b/chains/mainnet/desmos.json index d4100052..d2d07bc5 100644 --- a/chains/mainnet/desmos.json +++ b/chains/mainnet/desmos.json @@ -1,8 +1,8 @@ { "chain_name": "desmos", "coingecko": "desmos", - "api": ["https://api.mainnet.desmos.network"], - "rpc": ["https://rpc.mainnet.desmos.network:443"], + "api": ["https://api.mainnet.desmos.network", "https://desmos-api.lavenderfive.com"], + "rpc": ["https://rpc.mainnet.desmos.network:443", "https://desmos-rpc.lavenderfive.com:443"], "sdk_version": "0.45.8", "coin_type": "118", "min_tx_fee": "3000", diff --git a/chains/mainnet/lum.json b/chains/mainnet/lum.json index 0bdfd3f9..881acf7a 100644 --- a/chains/mainnet/lum.json +++ b/chains/mainnet/lum.json @@ -1,8 +1,8 @@ { "chain_name": "lum-network", "coingecko": "lum-network", - "api": ["https://api-lum.degeno.de", "https://node0.mainnet.lum.network/rest"], - "rpc": ["https://rpc-lum.degeno.de:443", "https://node0.mainnet.lum.network:443/rpc"], + "api": ["https://node0.mainnet.lum.network/rest", "https://lumnetwork-api.lavenderfive.com"], + "rpc": ["https://node0.mainnet.lum.network:443/rpc", "https://lumnetwork-rpc.lavenderfive.com:443"], "snapshot_provider": "", "sdk_version": "0.44.5", "coin_type": "880", diff --git a/chains/mainnet/shentu.json b/chains/mainnet/shentu.json index f12c35a2..94156d6b 100644 --- a/chains/mainnet/shentu.json +++ b/chains/mainnet/shentu.json @@ -2,8 +2,8 @@ { "chain_name": "shentu", "coingecko": "certik", - "api": ["https://certik-api.polkachu.com", "https://chainfull.noopsbycertik.com"], - "rpc": ["https://certik-rpc.polkachu.com:443"], + "api": ["https://shentu-api.polkachu.com", "https://chainfull.noopsbycertik.com"], + "rpc": ["https://shentu-rpc.polkachu.com:443"], "snapshot_provider": "", "sdk_version": "0.45.9", "coin_type": "118", diff --git a/chains/mainnet/terp.json b/chains/mainnet/terp.json new file mode 100644 index 00000000..71960b83 --- /dev/null +++ b/chains/mainnet/terp.json @@ -0,0 +1,19 @@ +{ + "chain_name": "terp", + "coingecko": "", + "api": ["https://lcd.terpnetwork.hexnodes.co"], + "rpc": ["https://rpc.terpnetwork.hexnodes.co"], + "snapshot_provider": "", + "sdk_version": "0.47.1", + "coin_type": "118", + "min_tx_fee": "500", + "addr_prefix": "terp", + "logo": "/logos/terp-network.jpg", + "assets": [{ + "base": "uterp", + "symbol": "TERP", + "exponent": "6", + "coingecko_id": "", + "logo": "/logos/terp-network.jpg" + }] +} diff --git a/package.json b/package.json index 868c2dfa..8a15c8d5 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "md-editor-v3": "^2.8.1", "numeral": "^2.0.6", "osmojs": "^14.0.0-rc.0", - "ping-widget": "^0.0.26", + "ping-widget": "^0.0.30", "pinia": "^2.0.28", "postcss": "^8.4.23", "qrcode": "^1.5.3", diff --git a/public/logos/ledger.jpeg b/public/logos/ledger.jpeg new file mode 100644 index 00000000..46949821 Binary files /dev/null and b/public/logos/ledger.jpeg differ diff --git a/public/logos/ledger.webp b/public/logos/ledger.webp new file mode 100644 index 00000000..9c733a10 Binary files /dev/null and b/public/logos/ledger.webp differ diff --git a/public/logos/terp-network.jpg b/public/logos/terp-network.jpg new file mode 100644 index 00000000..00b5137a Binary files /dev/null and b/public/logos/terp-network.jpg differ diff --git a/src/components/PaginationBar.vue b/src/components/PaginationBar.vue index 0720bfd0..d7d628b1 100644 --- a/src/components/PaginationBar.vue +++ b/src/components/PaginationBar.vue @@ -40,7 +40,7 @@ function gotoPage(pageNum: number) {
-
| {{ String(k).replaceAll("_", " ") }} | ++ {{ String(k).replaceAll('_', ' ') }} + |
-
-
-
-
-
- - Ping.pub --
-
-
-
-
-
-
-
-
-
-
- {{ item?.title }}
-
-
- {{ item?.badgeContent }}
-
-
-
-
-
- {{ item?.title }}
-
-
- {{ item?.badgeContent }}
-
-
- {{ item?.heading }}
-
-
-
+
- Sponsors
-
-
-
-
- Osmosis
-
-
-
-
-
- Becole
-
-
-
- Links
-
-
- Twitter
-
-
-
-
- Discord
-
-
-
-
- FAQ
-
-
-
+
+
+
diff --git a/src/modules/[chain]/index.vue b/src/modules/[chain]/index.vue
index c394b70f..d26249e0 100644
--- a/src/modules/[chain]/index.vue
+++ b/src/modules/[chain]/index.vue
@@ -321,19 +321,21 @@ const color = computed(() => {
+
diff --git a/src/layouts/components/NavBarWallet.vue b/src/layouts/components/NavBarWallet.vue
index 712555d8..e3e41414 100644
--- a/src/layouts/components/NavBarWallet.vue
+++ b/src/layouts/components/NavBarWallet.vue
@@ -1,7 +1,8 @@
-
+
diff --git a/src/layouts/components/NavBarI18n.vue b/src/layouts/components/NavBarI18n.vue
index b71a47f1..f52d50ac 100644
--- a/src/layouts/components/NavBarI18n.vue
+++ b/src/layouts/components/NavBarI18n.vue
@@ -2,56 +2,61 @@
import { ref, watch } from 'vue';
import { Icon } from '@iconify/vue';
const i18nLangs: Array<{ label: string; i18nLang: string }> = [
- {
- label: 'English',
- i18nLang: 'en',
- },
- {
- label: 'δΈζ',
- i18nLang: 'cn',
- },
+ {
+ label: 'English',
+ i18nLang: 'en',
+ },
+ {
+ label: 'δΈζ',
+ i18nLang: 'cn',
+ },
];
let locale = ref(useI18n({ useScope: 'global' }).locale);
watch(locale, (val: string) => {
- document.documentElement.setAttribute('lang', val as string);
+ document.documentElement.setAttribute('lang', val as string);
});
let currentLang = ref(localStorage.getItem('lang') || 'en');
watch(currentLang, (val: string) => {
- document.documentElement.setAttribute('lang', val as string);
+ document.documentElement.setAttribute('lang', val as string);
});
const handleLangChange = (lang: string) => {
- locale.value = lang;
- currentLang.value = lang;
- localStorage.setItem('lang', lang);
+ locale.value = lang;
+ currentLang.value = lang;
+ localStorage.setItem('lang', lang);
};
- + Ping.pub ++
+
-
-
-
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+ {{ item?.title }}
-
-
-
+ {{ item?.badgeContent }}
+
+
+
+
+ {{ item?.title }}
+
+
+ {{ item?.badgeContent }}
+
+
+ {{ item?.heading }}
+
+
+
+ Sponsors
+
+
+
+
+ Osmosis
+
+
+
+
+
+ Becole
+
+
+
+ Links
+
+
+ Twitter
+
+
+
+
+ Discord
+
+
+
+
+ FAQ
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
diff --git a/src/modules/[chain]/cosmwasm/[code_id]/contracts.vue b/src/modules/[chain]/cosmwasm/[code_id]/contracts.vue
index ed64392b..99df1fd2 100644
--- a/src/modules/[chain]/cosmwasm/[code_id]/contracts.vue
+++ b/src/modules/[chain]/cosmwasm/[code_id]/contracts.vue
@@ -2,9 +2,9 @@
import { useWasmStore } from '../WasmStore';
import { ref } from 'vue';
import type {
- ContractInfo,
- PaginabledContractStates,
- PaginabledContracts,
+ ContractInfo,
+ PaginabledContractStates,
+ PaginabledContracts,
} from '../types';
import DynamicComponent from '@/components/dynamic/DynamicComponent.vue';
import { useFormatter, useTxDialog } from '@/stores';
@@ -13,20 +13,20 @@ import { PageRequest } from '@/types';
const props = defineProps(['code_id', 'chain']);
-const pageRequest = ref(new PageRequest())
+const pageRequest = ref(new PageRequest());
const response = ref({} as PaginabledContracts);
const wasmStore = useWasmStore();
function loadContract(pageNum: number) {
- const pr = new PageRequest()
- pr.setPage(pageNum)
- wasmStore.wasmClient.getWasmCodeContracts(props.code_id, pr).then((x) => {
- response.value = x;
- });
+ const pr = new PageRequest();
+ pr.setPage(pageNum);
+ wasmStore.wasmClient.getWasmCodeContracts(props.code_id, pr).then((x) => {
+ response.value = x;
+ });
}
-loadContract(1)
+loadContract(1);
-const dialog = useTxDialog()
+const dialog = useTxDialog();
const format = useFormatter();
const infoDialog = ref(false);
const info = ref({} as ContractInfo);
@@ -34,66 +34,68 @@ const state = ref({} as PaginabledContractStates);
const selected = ref('');
function showInfo(address: string) {
- wasmStore.wasmClient.getWasmContracts(address).then((x) => {
- info.value = x.contract_info;
- });
+ wasmStore.wasmClient.getWasmContracts(address).then((x) => {
+ info.value = x.contract_info;
+ });
}
function showState(address: string) {
- selected.value = address
- pageload(1)
+ selected.value = address;
+ pageload(1);
}
function pageload(p: number) {
- pageRequest.value.setPage(p)
- wasmStore.wasmClient.getWasmContractStates(selected.value, pageRequest.value).then((x) => {
- state.value = x;
+ pageRequest.value.setPage(p);
+ wasmStore.wasmClient
+ .getWasmContractStates(selected.value, pageRequest.value)
+ .then((x) => {
+ state.value = x;
});
}
function showQuery(address: string) {
- selected.value = address;
- query.value = '';
- result.value = '';
+ selected.value = address;
+ query.value = '';
+ result.value = '';
}
function queryContract() {
- try {
- if (selectedRadio.value === 'raw') {
- wasmStore.wasmClient
- .getWasmContractRawQuery(selected.value, query.value)
- .then((x) => {
- result.value = JSON.stringify(x);
- })
- .catch((err) => {
- result.value = JSON.stringify(err);
- });
- } else {
- wasmStore.wasmClient
- .getWasmContractSmartQuery(selected.value, query.value)
- .then((x) => {
- result.value = JSON.stringify(x);
- })
- .catch((err) => {
- result.value = JSON.stringify(err);
- });
- }
- } catch (err) {
- result.value = JSON.stringify(err); // not works for now
+ try {
+ if (selectedRadio.value === 'raw') {
+ wasmStore.wasmClient
+ .getWasmContractRawQuery(selected.value, query.value)
+ .then((x) => {
+ result.value = JSON.stringify(x);
+ })
+ .catch((err) => {
+ result.value = JSON.stringify(err);
+ });
+ } else {
+ wasmStore.wasmClient
+ .getWasmContractSmartQuery(selected.value, query.value)
+ .then((x) => {
+ result.value = JSON.stringify(x);
+ })
+ .catch((err) => {
+ result.value = JSON.stringify(err);
+ });
}
- // TODO, show error in the result.
+ } catch (err) {
+ result.value = JSON.stringify(err); // not works for now
+ }
+ // TODO, show error in the result.
}
const radioContent = [
- {
- title: 'Raw Query',
- desc: 'Return raw result',
- value: 'raw',
- },
- {
- title: 'Smart Query',
- desc: 'Return structure result if possible',
- value: 'smart',
- },
+ {
+ title: 'Raw Query',
+ desc: 'Return raw result',
+ value: 'raw',
+ },
+ {
+ title: 'Smart Query',
+ desc: 'Return structure result if possible',
+ value: 'smart',
+ },
];
const selectedRadio = ref('raw');
@@ -101,130 +103,193 @@ const query = ref('');
const result = ref('');
-
-
+
+
+
-
-
- - Contract List of Code: {{ props.code_id }} --
-
+
+
+
-
-
-
- Contract Detail
-
-
-
-
-
-
- Contract States
-
-
-
-
-
-
- Query Contract
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item?.title }}
-
- {{ item?.desc }}
-
-
-
-
+
+
+
+ Contract Detail
+
+
+
+
+
+
+ Contract States
+
+
+
+
+
+
+ Query Contract
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item?.title }}
+
+ {{ item?.desc }}
+
+
+
+
+
-
Application Versions
+
diff --git a/src/modules/[chain]/params/index.vue b/src/modules/[chain]/params/index.vue
index 8c634bda..365c1221 100644
--- a/src/modules/[chain]/params/index.vue
+++ b/src/modules/[chain]/params/index.vue
@@ -45,7 +45,7 @@ onMounted(() => {
Node Information
-
+ {{ store.nodeVersion?.title }}
-
-
-
-
-
-
-
-
-
-
-
-
- Top 33%
+
-
+ {{ list.length }}/{{ staking.params.max_validators }}
+
-
- Top 67%
+
+
+
-
+
+
+
+
+
+
+ Top 33%
+
+
+
+ Top 67%
+
+
+
@@ -140,38 +177,13 @@ async function addAddress(acc: AccountEntry) {
-
-
-
- Import
-
-
-
-
+
+
{{ chains.length }}/{{ dashboard.length }}
+ {
- return {
- earlest: {} as Block,
- latest: {} as Block,
- recents: [] as Block[],
- };
- },
- getters: {
- blocktime(): number {
- if (this.earlest && this.latest) {
- if (
- this.latest.block?.header?.height !==
- this.earlest.block?.header?.height
- ) {
- const diff = dayjs(this.latest.block?.header?.time).diff(
- this.earlest.block?.header?.time
- );
- return diff;
- }
- }
- return 6000;
+ state: () => {
+ return {
+ earlest: {} as Block,
+ latest: {} as Block,
+ recents: [] as Block[],
+ theme: (window.localStorage.getItem('theme') || 'dark') as
+ | 'light'
+ | 'dark',
+ };
},
- blockchain() {
- return useBlockchain();
- },
- currentChainId(): string {
- return this.latest.block?.header.chain_id || ""
- },
- txsInRecents() {
- const txs = [] as { height: string; hash: string; tx: DecodedTxRaw }[];
- this.recents.forEach((b) =>
- b.block?.data?.txs.forEach((tx: string) => {
- if (tx) {
- const raw = fromBase64(tx);
- try {
- txs.push({
- height: b.block.header.height,
- hash: hashTx(raw),
- tx: decodeTxRaw(raw),
- });
- } catch (e) {
- console.error(e);
+ getters: {
+ blocktime(): number {
+ if (this.earlest && this.latest) {
+ if (
+ this.latest.block?.header?.height !==
+ this.earlest.block?.header?.height
+ ) {
+ const diff = dayjs(this.latest.block?.header?.time).diff(
+ this.earlest.block?.header?.time
+ );
+ return diff;
+ }
}
- }
- })
- );
- return txs;
- },
- },
- actions: {
- async initial() {
- this.fetchLatest();
- },
- async clearRecentBlocks() {
- this.recents = [];
- },
- async fetchLatest() {
- this.latest = await this.blockchain.rpc?.getBaseBlockLatest();
- if (
- !this.earlest ||
- this.earlest?.block?.header?.chain_id !=
- this.latest?.block?.header?.chain_id
- ) {
- //reset earlest and recents
- this.earlest = this.latest;
- this.recents = [];
- }
- //check if the block exists in recents
- if (
- this.recents.findIndex(
- (x) => x?.block_id?.hash === this.latest?.block_id?.hash
- ) === -1
- ) {
- if (this.recents.length >= 50) {
- this.recents.shift();
- }
- this.recents.push(this.latest);
- }
- return this.latest;
+ return 6000;
+ },
+ blockchain() {
+ return useBlockchain();
+ },
+ currentChainId(): string {
+ return this.latest.block?.header.chain_id || '';
+ },
+ txsInRecents() {
+ const txs = [] as {
+ height: string;
+ hash: string;
+ tx: DecodedTxRaw;
+ }[];
+ this.recents.forEach((b) =>
+ b.block?.data?.txs.forEach((tx: string) => {
+ if (tx) {
+ const raw = fromBase64(tx);
+ try {
+ txs.push({
+ height: b.block.header.height,
+ hash: hashTx(raw),
+ tx: decodeTxRaw(raw),
+ });
+ } catch (e) {
+ console.error(e);
+ }
+ }
+ })
+ );
+ return txs;
+ },
},
+ actions: {
+ async initial() {
+ this.fetchLatest();
+ },
+ async clearRecentBlocks() {
+ this.recents = [];
+ },
+ async fetchLatest() {
+ this.latest = await this.blockchain.rpc?.getBaseBlockLatest();
+ if (
+ !this.earlest ||
+ this.earlest?.block?.header?.chain_id !=
+ this.latest?.block?.header?.chain_id
+ ) {
+ //reset earlest and recents
+ this.earlest = this.latest;
+ this.recents = [];
+ }
+ //check if the block exists in recents
+ if (
+ this.recents.findIndex(
+ (x) => x?.block_id?.hash === this.latest?.block_id?.hash
+ ) === -1
+ ) {
+ if (this.recents.length >= 50) {
+ this.recents.shift();
+ }
+ this.recents.push(this.latest);
+ }
+ return this.latest;
+ },
- async fetchValidatorByHeight(height?: number, offset = 0) {
- return this.blockchain.rpc.getBaseValidatorsetAt(String(height), offset);
+ async fetchValidatorByHeight(height?: number, offset = 0) {
+ return this.blockchain.rpc.getBaseValidatorsetAt(
+ String(height),
+ offset
+ );
+ },
+ async fetchLatestValidators(offset = 0) {
+ return this.blockchain.rpc.getBaseValidatorsetLatest(offset);
+ },
+ async fetchBlock(height?: number | string) {
+ return this.blockchain.rpc.getBaseBlockAt(String(height));
+ },
+ async fetchAbciInfo() {
+ return this.blockchain.rpc.getBaseNodeInfo();
+ },
+ // async fetchNodeInfo() {
+ // return this.blockchain.rpc.no()
+ // }
},
- async fetchLatestValidators(offset = 0) {
- return this.blockchain.rpc.getBaseValidatorsetLatest(offset);
- },
- async fetchBlock(height?: number | string) {
- return this.blockchain.rpc.getBaseBlockAt(String(height));
- },
- async fetchAbciInfo() {
- return this.blockchain.rpc.getBaseNodeInfo();
- },
- // async fetchNodeInfo() {
- // return this.blockchain.rpc.no()
- // }
- },
});
diff --git a/src/stores/useWalletStore.ts b/src/stores/useWalletStore.ts
index eebea3a1..2017ba61 100644
--- a/src/stores/useWalletStore.ts
+++ b/src/stores/useWalletStore.ts
@@ -9,6 +9,7 @@ import type {
WalletConnected,
} from '@/types';
import { useStakingStore } from './useStakingStore';
+import router from '@/router'
export const useWalletStore = defineStore('walletStore', {
state: () => {
@@ -17,7 +18,7 @@ export const useWalletStore = defineStore('walletStore', {
delegations: [] as Delegation[],
unbonding: [] as UnbondingResponses[],
rewards: {} as DelegatorRewards,
- walletIsConnected: {} as WalletConnected | null
+ walletIsConnected: {} as WalletConnected
};
},
getters: {
@@ -133,6 +134,10 @@ export const useWalletStore = defineStore('walletStore', {
this.walletIsConnected = value || {}
// JSON.parse(localStorage.getItem(key) || '{}');
return this.walletIsConnected
+ },
+ suggestChain() {
+ // const router = useRouter()
+ router.push({path: '/wallet/keplr'})
}
},
});
\ No newline at end of file
diff --git a/src/style.css b/src/style.css
index 6685891f..c2615393 100644
--- a/src/style.css
+++ b/src/style.css
@@ -33,8 +33,4 @@ html[data-theme='dark'] {
.table th:first-child {
position: relative;
z-index: 2;
-}
-
-.btn {
- @apply rounded;
-}
+}
\ No newline at end of file
diff --git a/tailwind.config.js b/tailwind.config.js
index 93a73c56..13ce1f2f 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -11,14 +11,7 @@ module.exports = {
main: 'var(--text-main)',
secondary: 'var(--text-secondary)',
active: 'var(--bg-active)',
- },
- borderRadius: {
- none: '0',
- xs: '.125rem',
- sm: '.25rem',
- DEFAULT: '.5rem',
- lg: '.75rem',
- },
+ }
},
},
plugins: [require('daisyui')],
diff --git a/yarn.lock b/yarn.lock
index c410b702..d8b75723 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5476,10 +5476,10 @@ pify@^3.0.0:
resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz"
integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
-ping-widget@^0.0.26:
- version "0.0.26"
- resolved "https://registry.yarnpkg.com/ping-widget/-/ping-widget-0.0.26.tgz#25089b57c0ff8e22e9f67435d23d09d33399b100"
- integrity sha512-XGwNCx8svozTTMPqCkj6YWYk87eMftLBwsrapRjDLNaJA5NL2ouUIkaEUwV5Llt287WGW+FR+8PiwvNkaYgTPQ==
+ping-widget@^0.0.30:
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/ping-widget/-/ping-widget-0.0.30.tgz#f417cff47fb8a95e443e953bc5eb3c912801f605"
+ integrity sha512-bKa47dHNqUw/TaRBbjxQkb5+yXMwEq0+EiIs3b9Q5/0HlFcs19rdzH/RDQj4S3tpClOX7N5hTpAFikOInHq20g==
dependencies:
"@cosmjs/amino" "^0.30.1"
"@cosmjs/cosmwasm-stargate" "^0.30.1"
| |||||||||||||||||||||||||||||||||||||||||||||||||||