improve wasm contract

This commit is contained in:
liangping 2024-03-24 10:13:12 +08:00
parent 7958877354
commit a56271f370
3 changed files with 49 additions and 12 deletions

View File

@ -56,7 +56,7 @@ function showInfo(address: string) {
</h2> </h2>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-compact w-full mt-4"> <table class="table table-compact w-full mt-4">
<thead> <thead class="bg-base-200">
<tr> <tr>
<th style="position: relative; z-index: 2">{{ $t('cosmwasm.contract_list') }}</th> <th style="position: relative; z-index: 2">{{ $t('cosmwasm.contract_list') }}</th>
<th>{{ $t('account.action') }}</th> <th>{{ $t('account.action') }}</th>

View File

@ -36,6 +36,20 @@ const balances = ref({} as PaginatedBalances)
const contractAddress = String(route.query.contract) const contractAddress = String(route.query.contract)
const history = JSON.parse(localStorage.getItem("contract_history") || "{}")
if(history[chainStore.chainName]) {
if(!history[chainStore.chainName].includes(contractAddress)) {
history[chainStore.chainName].push(contractAddress)
if(history[chainStore.chainName].length > 10) {
history[chainStore.chainName].shift()
}
}
} else {
history[chainStore.chainName] = [contractAddress]
}
localStorage.setItem("contract_history", JSON.stringify(history))
onMounted(() => { onMounted(() => {
const address = contractAddress const address = contractAddress
wasmStore.wasmClient.getWasmContracts(address).then((x) => { wasmStore.wasmClient.getWasmContracts(address).then((x) => {
@ -137,7 +151,7 @@ const result = ref({});
</div> </div>
<div class="text-center mb-4"> <div class="text-center mb-4">
<RouterLink to="contracts"><span class="btn btn-xs text-xs mr-2"> Back </span> </RouterLink> <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">{{ <label @click="showFunds()" for="modal-contract-funds" class="btn btn-primary btn-xs text-xs mr-2">{{
$t('cosmwasm.btn_funds') }}</label> $t('cosmwasm.btn_funds') }}</label>
<label class="btn btn-primary btn-xs text-xs mr-2" for="modal-contract-states" @click="showState()"> <label class="btn btn-primary btn-xs text-xs mr-2" for="modal-contract-states" @click="showState()">
@ -169,9 +183,9 @@ const result = ref({});
</div> </div>
<div class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow"> <div class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow">
<h2 class="card-title truncate w-full mt-4">Transactions</h2> <h2 class="card-title truncate w-full mt-4 mb-2">Transactions</h2>
<table class="table"> <table class="table">
<thead> <thead class=" bg-base-200">
<tr> <tr>
<td> {{ $t('ibc.height') }}</td> <td> {{ $t('ibc.height') }}</td>
<td>{{ $t('ibc.txhash') }}</td> <td>{{ $t('ibc.txhash') }}</td>

View File

@ -1,7 +1,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useBlockchain, useFormatter, useTxDialog } from '@/stores'; import { useBlockchain, useFormatter, useTxDialog } from '@/stores';
import { useWasmStore } from './WasmStore'; import { useWasmStore } from './WasmStore';
import { ref } from 'vue'; import { onMounted, ref } from 'vue';
import type { PaginabledCodeInfos } from './types'; import type { PaginabledCodeInfos } from './types';
import { PageRequest } from '@/types'; import { PageRequest } from '@/types';
import PaginationBar from '@/components/PaginationBar.vue'; import PaginationBar from '@/components/PaginationBar.vue';
@ -15,6 +15,8 @@ const pageRequest = ref(new PageRequest())
const wasmStore = useWasmStore(); const wasmStore = useWasmStore();
const dialog = useTxDialog() const dialog = useTxDialog()
const creator = ref("") const creator = ref("")
const field = ref("contract")
const history = ref([])
function pageload(pageNum: number) { function pageload(pageNum: number) {
pageRequest.value.setPage(pageNum) pageRequest.value.setPage(pageNum)
@ -24,21 +26,42 @@ function pageload(pageNum: number) {
} }
pageload(1) pageload(1)
onMounted(() => {
const historyStore = JSON.parse(localStorage.getItem("contract_history") || "{}")
history.value = historyStore[props.chain] || []
})
function myContracts() { function myContracts() {
router.push(`/${props.chain}/cosmwasm/${creator.value}/contracts`) if(field.value === "contract")
router.push(`/${props.chain}/cosmwasm/0/transactions?contract=${creator.value}`)
else if(field.value === "creator")
router.push(`/${props.chain}/cosmwasm/${creator.value}/contracts`)
}
const togo = ref("")
function gotoHistory() {
router.push(`/${props.chain}/cosmwasm/0/transactions?contract=${togo.value}`)
} }
</script> </script>
<template> <template>
<div class="bg-base-100 px-4 pt-3 pb-4 rounded mb-4 shadow"> <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> <h2 class="card-title truncate w-full mb-4">{{ $t('cosmwasm.title') }}</h2>
<div class="grid grid-flow-col auto-cols-max gap-4 overflow-hidden">
<div class="join border border-primary"> <div class="join w-full border border-primary">
<input v-model="creator" type=text class="input input-bordered w-40 join-item" placeholder="creator address" /> <select v-model="field" class="select select-primary"><option value="contract">Contract</option><option value="creator">Creator</option></select>
<button class="join-item btn btn-primary" @click="myContracts()">{{ $t('cosmwasm.btn_query') }}</button> <input v-model="creator" type=text class="input input-bordered w-full join-item" placeholder="address" />
<button class="join-item btn btn-primary" @click="myContracts()">{{ $t('cosmwasm.btn_query') }}</button>
</div>
<div>
<select v-model="togo" class="select select-primary" @change="gotoHistory()">
<option value="">History</option>
<option v-for="(v, index) in history" :key="index" :value="v" >...{{ String(v).substring(45) }}</option>
</select>
</div>
</div> </div>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-compact w-full mt-4 text-sm"> <table class="table table-compact w-full mt-4 text-sm">
<thead> <thead class=" bg-base-200">
<tr> <tr>
<th>{{ $t('cosmwasm.code_id') }}</th> <th>{{ $t('cosmwasm.code_id') }}</th>
<th>{{ $t('cosmwasm.code_hash') }}</th> <th>{{ $t('cosmwasm.code_hash') }}</th>