improve code

This commit is contained in:
liangping 2025-04-13 09:11:15 +08:00
parent b434ac1303
commit 9039c08a5f
2 changed files with 62 additions and 76 deletions

View File

@ -117,7 +117,7 @@ export interface WasmRequestRegistry extends AbstractRegistry {
);
let re = /`(\w+)`/g
let x = String(message).match(re)
return code === 2 ? x?.map(e => e.replaceAll('`', '')) : null
return code === 2 && x ? x.map(e => e.replaceAll('`', '')) : []
}
getWasmContractStates(address: string, pr: PageRequest) {
if(!pr) pr = new PageRequest()

View File

@ -23,12 +23,10 @@ const wasmStore = useWasmStore();
const route = useRoute()
const page = ref(new PageRequest())
const pageRequest = ref(new PageRequest());
const response = ref({} as PaginabledContracts);
const txs = ref<PaginatedTxs>({ txs: [], tx_responses: [], pagination: { total: "0" } });
const dialog = useTxDialog();
const infoDialog = ref(false);
const info = ref({} as ContractInfo);
const state = ref({} as PaginabledContractStates);
const selected = ref('');
@ -67,6 +65,9 @@ onMounted(() => {
}
})
showFunds()
showState()
})
function pageload(pageNum: number) {
@ -136,23 +137,10 @@ function queryContract() {
// 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',
},
];
const selectedRadio = ref('smart');
const query = ref('');
const result = ref({});
const queries = ref<RegExpMatchArray | null>()
const queries = ref<string[]>([])
const tab = ref('detail')
</script>
<template>
@ -176,21 +164,37 @@ const tab = ref('detail')
<DynamicComponent :value="info" />
</div>
<div class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow">
<div class="flex items-center justify-between px-3 pt-2">
<div class="text-lg">{{ $t('cosmwasm.contract_balances') }}</div>
</div>
<ul class="menu mt-5">
<li v-for="b in balances.balances">
<a class="flex justify-between"><span>{{ format.formatToken(b) }}</span> {{ b.amount }}
</a>
</li>
<li v-if="balances.pagination?.total === '0'" class="my-10 text-center">{{
$t('cosmwasm.no_escrowed_assets') }}</li>
</ul>
</div>
<div class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow">
<div class="flex items-center justify-between px-3 pt-2 mb-4">
<div class="text-lg">{{ $t('cosmwasm.contract_states') }}</div>
</div>
<div class="overflow-auto">
<JsonViewer
:value="state.models?.map(v => ({ key: format.hexToString(v.key), value: JSON.parse(format.base64ToString(v.value)) })) || ''"
:theme="baseStore.theme || 'dark'" style="background: transparent;" copyable boxed sort
:expand-depth="5" />
<PaginationBar :limit="pageRequest.limit" :total="state.pagination?.total"
:callback="pageloadState" />
</div>
</div>
<div class="text-center mb-4">
<RouterLink :to="`../${info.code_id}/contracts`"><span class="btn btn-xs text-xs mr-2"> Back </span>
</RouterLink>
<label @click="showFunds()" for="modal-contract-funds" class="btn btn-primary btn-xs text-xs mr-2">{{
$t('cosmwasm.btn_funds') }}</label>
<label class="btn btn-primary btn-xs text-xs mr-2" for="modal-contract-states" @click="showState()">
{{ $t('cosmwasm.btn_states') }}
</label>
<label for="modal-contract-query" class="btn btn-primary btn-xs text-xs mr-2" @click="showQuery()">
{{ $t('cosmwasm.btn_query') }}
</label>
<label for="wasm_execute_contract" class="btn btn-primary btn-xs text-xs mr-2"
@click="dialog.open('wasm_execute_contract', { contract: contractAddress })">
{{ $t('cosmwasm.btn_execute') }}
</label>
<label for="wasm_migrate_contract" class="btn btn-primary btn-xs text-xs mr-2"
@click="dialog.open('wasm_migrate_contract', { contract: contractAddress })">
@ -252,71 +256,53 @@ const tab = ref('detail')
<div class="px-3">
<div>
<div>
<span v-for="q in queries" class="btn btn-xs mx-1"
@click="selectQuery(q)">{{ q }}</span>
<span v-for="q in queries" class="btn btn-xs mx-1" @click="selectQuery(q)">{{ q }}</span>
</div>
<textarea v-model="query" placeholder="Query String, {}" label="Query String"
class="my-2 textarea textarea-bordered w-full" />
<div class="mt-4 mb-4 text-center">
<button class="btn btn-primary btn-sm px-4 text-white" @click="queryContract()">
{{ $t('cosmwasm.query_contract') }}
{{ $t('cosmwasm.btn_query') }}
</button>
</div>
</div>
</div>
</div>
</div>
<div v-show="tab === 'execute'">
<div class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow">
<div class="flex items-center justify-between px-3 pt-2 mb-4">
<div class="text-lg font-semibold">{{ $t('cosmwasm.result') }}</div>
<div class="text-lg font-semibold">{{ $t('cosmwasm.suggested_messages') }}</div>
</div>
<div class="px-3">
<div>
<div>
<span v-for="q in queries" class="btn btn-xs mx-1" @click="selectQuery(q)">{{ q }}</span>
</div>
<textarea v-model="query" placeholder="Query String, {}" label="Query String"
class="my-2 textarea textarea-bordered w-full" />
<div class="mt-4 mb-4 text-center">
<button class="btn btn-primary btn-sm px-4 text-white" @click="queryContract()">
{{ $t('cosmwasm.btn_execute') }}
</button>
</div>
</div>
</div>
<JsonViewer :value="result" :theme="baseStore.theme" style="background: transparent;" copyable boxed
sort :expand-depth="5" />
</div>
</div>
<!-- WasmVerification :contract="contractAddress"/ -->
<div>
<input type="checkbox" id="modal-contract-funds" class="modal-toggle" />
<label for="modal-contract-funds" class="modal cursor-pointer">
<label class="modal-box relative p-2" for="">
<div>
<div class="flex items-center justify-between px-3 pt-2">
<div class="text-lg">{{ $t('cosmwasm.contract_balances') }}</div>
<label for="modal-contract-funds" class="btn btn-sm btn-circle"></label>
</div>
<ul class="menu mt-5">
<li v-for="b in balances.balances">
<a class="flex justify-between"><span>{{ format.formatToken(b) }}</span> {{ b.amount }}
</a>
</li>
<li v-if="balances.pagination?.total === '0'" class="my-10 text-center">{{
$t('cosmwasm.no_escrowed_assets') }}</li>
</ul>
</div>
</label>
</label>
<input type="checkbox" id="modal-contract-states" class="modal-toggle" />
<label for="modal-contract-states" class="modal cursor-pointer">
<label class="modal-box !w-11/12 !max-w-5xl" for="">
<div>
<div class="flex items-center justify-between px-3 pt-2 mb-4">
<div class="text-lg">{{ $t('cosmwasm.contract_states') }}</div>
<label for="modal-contract-states" class="btn btn-sm btn-circle"></label>
</div>
<div class="overflow-auto">
<JsonViewer
:value="state.models?.map(v => ({ key: format.hexToString(v.key), value: JSON.parse(format.base64ToString(v.value)) })) || ''"
:theme="baseStore.theme || 'dark'" style="background: transparent;" copyable boxed sort
:expand-depth="5" />
<PaginationBar :limit="pageRequest.limit" :total="state.pagination?.total"
:callback="pageloadState" />
</div>
</div>
</label>
</label>
<div v-if="tab === 'execute' || tab === 'query'" class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow">
<div class="flex items-center justify-between px-3 pt-2 mb-4">
<div class="text-lg font-semibold">{{ $t('cosmwasm.result') }}</div>
</div>
<JsonViewer :value="result" :theme="baseStore.theme" style="background: transparent;" copyable boxed sort
:expand-depth="5" />
</div>
</div>
</template>