diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b99d91df..2421b2ab1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +- [#131](https://github.com/alleslabs/celatone-frontend/pull/131) Add CW2-related information to contract details page - [#120](https://github.com/alleslabs/celatone-frontend/pull/120) Add simulate migrate fee and the final migration step - [#108](https://github.com/alleslabs/celatone-frontend/pull/108) Add migrate options on migrate page and upload new code for migration - [#130](https://github.com/alleslabs/celatone-frontend/pull/130) Add support for Terra public projects diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index acf17f8c1..86eabf8c2 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -5,8 +5,9 @@ import { useCelatoneApp } from "lib/app-provider"; import { INSTANTIATED_LIST_NAME } from "lib/data"; import { useCodeStore, useContractStore, useLCDEndpoint } from "lib/hooks"; import { useAssetInfos } from "lib/services/assetService"; -import type { InstantiateInfo } from "lib/services/contract"; +import type { ContractCw2Info, InstantiateInfo } from "lib/services/contract"; import { + queryContractCw2Info, queryContractBalances, queryInstantiateInfo, } from "lib/services/contract"; @@ -39,6 +40,7 @@ export interface ContractData { chainId: string; codeInfo: Option; contractLocalInfo: Option; + contractCw2Info: Option; instantiateInfo: Option; publicProject: { publicInfo: Option; @@ -112,6 +114,13 @@ export const useContractData = ( queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), { enabled: !!currentChainRecord } ); + + const { data: contractCw2Info } = useQuery( + ["query", "contract_cw2_info", endpoint, contractAddress], + async () => queryContractCw2Info(endpoint, contractAddress), + { enabled: !!currentChainRecord } + ); + const { data: contractBalances } = useQuery( ["query", "contractBalances", contractAddress], async () => @@ -154,6 +163,7 @@ export const useContractData = ( chainId: currentChainRecord.chain.chain_id, codeInfo, contractLocalInfo, + contractCw2Info, instantiateInfo, publicProject: { publicInfo, diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index 1bf24d52c..871f029b7 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -48,6 +48,7 @@ const RenderPortId = ({ portId }: { portId: string }) => { export const InstantiateInfo = ({ contractData: { + contractCw2Info, instantiateInfo, chainId, codeInfo, @@ -84,6 +85,18 @@ export const InstantiateInfo = ({ /> + + {contractCw2Info ? ( + + {contractCw2Info.contract} ({contractCw2Info.version}) + + ) : ( + + No Info + + )} + + { + const { data } = await axios.get( + `${endpoint}/cosmwasm/wasm/v1/contract/${contractAddress}/raw/Y29udHJhY3RfaW5mbw%3D%3D` + ); + return JSON.parse(libDecode(data.data)) as ContractCw2Info; +}; + export const queryInstantiateInfo = async ( endpoint: string, indexerGraphClient: GraphQLClient,