forked from cerc-io/cosmos-explorer
add query by creator
This commit is contained in:
parent
909fed3aa6
commit
48adbf4395
@ -27,6 +27,7 @@ export interface WasmRequestRegistry extends AbstractRegistry {
|
||||
cosmwasm_contract_address_raw_query_data: Request<any>;
|
||||
cosmwasm_contract_address_smart_query_data: Request<any>;
|
||||
cosmwasm_contract_address_state: Request<PaginabledContractStates>;
|
||||
cosmwasm_wasm_contracts_creator: Request<PaginabledContracts>;
|
||||
}
|
||||
|
||||
export const DEFAULT: WasmRequestRegistry = {
|
||||
@ -57,6 +58,10 @@ export const DEFAULT: WasmRequestRegistry = {
|
||||
url: '/cosmwasm/wasm/v1/contract/{address}/state',
|
||||
adapter,
|
||||
},
|
||||
cosmwasm_wasm_contracts_creator: {
|
||||
url: '/cosmwasm/wasm/v1/contracts/creator/{creator_address}',
|
||||
adapter,
|
||||
},
|
||||
};
|
||||
|
||||
class WasmRestClient extends BaseRestClient<WasmRequestRegistry> {
|
||||
@ -79,6 +84,11 @@ class WasmRestClient extends BaseRestClient<WasmRequestRegistry> {
|
||||
getWasmContracts(address: string) {
|
||||
return this.request(this.registry.cosmwasm_contract_address, { address });
|
||||
}
|
||||
getWasmContractsByCreator(creator_address: string, page?: PageRequest) {
|
||||
if(!page) page = new PageRequest()
|
||||
const query = `?${page.toQueryString()}`
|
||||
return this.request(this.registry.cosmwasm_wasm_contracts_creator, { creator_address }, query);
|
||||
}
|
||||
getWasmContractHistory(address: string) {
|
||||
return this.request(this.registry.cosmwasm_contract_address_history, {
|
||||
address,
|
||||
|
@ -21,9 +21,20 @@ 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;
|
||||
});
|
||||
if(String(props.code_id).search(/^[\d]+$/) > -1){
|
||||
// query with code id
|
||||
wasmStore.wasmClient.getWasmCodeContracts(props.code_id, pr).then((x) => {
|
||||
response.value = x;
|
||||
})
|
||||
} else {
|
||||
// query by creator
|
||||
wasmStore.wasmClient.getWasmContractsByCreator(props.code_id, pr).then((x) => {
|
||||
response.value = {
|
||||
contracts: x.contract_addresses,
|
||||
pagination: x.pagination,
|
||||
};
|
||||
})
|
||||
}
|
||||
}
|
||||
loadContract(1);
|
||||
|
||||
|
@ -5,6 +5,7 @@ import { ref } from 'vue';
|
||||
import type { PaginabledCodeInfos } from './types';
|
||||
import { PageRequest } from '@/types';
|
||||
import PaginationBar from '@/components/PaginationBar.vue';
|
||||
import router from '@/router';
|
||||
|
||||
const props = defineProps(['chain']);
|
||||
|
||||
@ -13,6 +14,7 @@ const codes = ref({} as PaginabledCodeInfos);
|
||||
const pageRequest = ref(new PageRequest())
|
||||
const wasmStore = useWasmStore();
|
||||
const dialog = useTxDialog()
|
||||
const creator = ref("")
|
||||
|
||||
function pageload(pageNum: number) {
|
||||
pageRequest.value.setPage(pageNum)
|
||||
@ -21,10 +23,19 @@ function pageload(pageNum: number) {
|
||||
});
|
||||
}
|
||||
pageload(1)
|
||||
|
||||
function myContracts() {
|
||||
router.push(`/${props.chain}/cosmwasm/${creator.value}/contracts`)
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<div class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow">
|
||||
<h2 class="card-title truncate w-full">{{ $t('cosmwasm.title') }}</h2>
|
||||
|
||||
<div class="join border border-primary">
|
||||
<input v-model="creator" type=text class="input input-bordered w-40 join-item" placeholder="creator address" />
|
||||
<button class="join-item btn btn-primary" @click="myContracts()">{{ $t('cosmwasm.btn_query') }}</button>
|
||||
</div>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-compact w-full mt-4 text-sm">
|
||||
<thead>
|
||||
|
@ -65,5 +65,8 @@ export interface PaginabledCodeInfos extends PaginatedResponse {
|
||||
code_infos: CodeInfo[];
|
||||
}
|
||||
export interface PaginabledContracts extends PaginatedResponse {
|
||||
contracts: string[];
|
||||
// return type of cosmwasm_code_id_contracts
|
||||
contracts?: string[];
|
||||
// return type of cosmwasm_wasm_contracts_creator
|
||||
contract_addresses?: string[];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user