From 5e5d63d18125231fa17e7c4b8964015c8adc0d20 Mon Sep 17 00:00:00 2001 From: Sawit Trisirisatayawong Date: Mon, 30 Jan 2023 15:04:41 +0700 Subject: [PATCH 01/16] feat: add cw2 info data --- src/lib/model/contract.ts | 15 ++++++++++++- .../components/InstantiateInfo.tsx | 13 ++++++++++++ src/lib/pages/contract-details/index.tsx | 2 +- src/lib/services/contract.ts | 21 +++++++++++++++++++ 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index 773eaf1a2..5a21c1ea7 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -5,8 +5,12 @@ 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 { + ContractVersionInfo, + InstantiateInfo, +} from "lib/services/contract"; import { + queryContractInfo, queryContractBalances, queryInstantiateInfo, } from "lib/services/contract"; @@ -39,6 +43,7 @@ export interface ContractData { chainId: string; codeInfo: Option; contractLocalInfo: Option; + contractInfo: Option; instantiateInfo: Option; publicProject: { publicInfo: Option; @@ -112,6 +117,13 @@ export const useContractData = ( queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), { enabled: !!currentChainRecord } ); + + const { data: contractInfo } = useQuery( + ["query", "contractInfo", endpoint, contractAddress], + async () => queryContractInfo(endpoint, contractAddress), + { enabled: !!currentChainRecord } + ); + const { data: contractBalances } = useQuery( ["query", "contractBalances", contractAddress], async () => @@ -154,6 +166,7 @@ export const useContractData = ( chainId: currentChainRecord.chain.chain_id, codeInfo, contractLocalInfo, + contractInfo, 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..336536dde 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: { + contractInfo, instantiateInfo, chainId, codeInfo, @@ -84,6 +85,18 @@ export const InstantiateInfo = ({ /> + + {contractInfo ? ( + + {contractInfo?.contract} ({contractInfo?.version}) + + ) : ( + + No Info + + )} + + { + const { data } = await axios.get( + `${endpoint}/cosmwasm/wasm/v1/contract/${contractAddress}/raw/Y29udHJhY3RfaW5mbw%3D%3D` + ); + return JSON.parse( + Buffer.from(data.data, "base64").toString("binary") + ) as ContractVersionInfo; +}; + export const queryInstantiateInfo = async ( endpoint: string, indexerGraphClient: GraphQLClient, From 42188c5fdd5e4704254a452ea76c66742bbabda0 Mon Sep 17 00:00:00 2001 From: Sawit Trisirisatayawong Date: Mon, 30 Jan 2023 15:08:26 +0700 Subject: [PATCH 02/16] docs: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b89cf6c9e..d9f9d3e47 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 From ef99c8e63da3bf5138e4447a187416dc2fa97bd4 Mon Sep 17 00:00:00 2001 From: poomthiti Date: Mon, 30 Jan 2023 17:37:15 +0700 Subject: [PATCH 03/16] fix: invalidate queries after update/clear admin --- src/lib/app-fns/tx/clearAdmin.tsx | 4 ++-- src/lib/app-provider/tx/clearAdmin.ts | 13 ++++++++++--- src/lib/app-provider/tx/updateAdmin.ts | 11 +++++++++-- .../modal/contract/ClearAdminContract.tsx | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/lib/app-fns/tx/clearAdmin.tsx b/src/lib/app-fns/tx/clearAdmin.tsx index 52e0a156a..8eb485014 100644 --- a/src/lib/app-fns/tx/clearAdmin.tsx +++ b/src/lib/app-fns/tx/clearAdmin.tsx @@ -23,7 +23,7 @@ interface ClearAdminTxParams { fee: StdFee; memo?: string; client: SigningCosmWasmClient; - onTxSucceed?: (txHash: string) => void; + onTxSucceed?: () => void; } export const clearAdminTx = ({ @@ -40,7 +40,7 @@ export const clearAdminTx = ({ postFn: () => client.clearAdmin(address, contractAddress, fee, memo), }), ({ value: txInfo }) => { - onTxSucceed?.(txInfo.transactionHash); + onTxSucceed?.(); return { value: null, phase: TxStreamPhase.SUCCEED, diff --git a/src/lib/app-provider/tx/clearAdmin.ts b/src/lib/app-provider/tx/clearAdmin.ts index 601538350..18c18b1d4 100644 --- a/src/lib/app-provider/tx/clearAdmin.ts +++ b/src/lib/app-provider/tx/clearAdmin.ts @@ -1,4 +1,5 @@ import { useWallet } from "@cosmos-kit/react"; +import { useQueryClient } from "@tanstack/react-query"; import { useCallback } from "react"; import { useFabricateFee } from "../hooks"; @@ -7,11 +8,12 @@ import { CLEAR_ADMIN_GAS } from "lib/data"; import type { ContractAddr } from "lib/types"; export interface ClearAdminStreamParams { - onTxSucceed?: (txHash: string) => void; + onTxSucceed?: () => void; } export const useClearAdminTx = (contractAddress: ContractAddr) => { const { address, getCosmWasmClient } = useWallet(); + const queryClient = useQueryClient(); const fabricateFee = useFabricateFee(); const clearAdminFee = fabricateFee(CLEAR_ADMIN_GAS); @@ -26,9 +28,14 @@ export const useClearAdminTx = (contractAddress: ContractAddr) => { contractAddress, fee: clearAdminFee, client, - onTxSucceed, + onTxSucceed: () => { + onTxSucceed?.(); + queryClient.invalidateQueries({ + queryKey: ["admin_by_contracts", "instantiateInfo"], + }); + }, }); }, - [address, clearAdminFee, contractAddress, getCosmWasmClient] + [address, clearAdminFee, queryClient, contractAddress, getCosmWasmClient] ); }; diff --git a/src/lib/app-provider/tx/updateAdmin.ts b/src/lib/app-provider/tx/updateAdmin.ts index bb9ee397e..aa703dc9e 100644 --- a/src/lib/app-provider/tx/updateAdmin.ts +++ b/src/lib/app-provider/tx/updateAdmin.ts @@ -1,5 +1,6 @@ import type { StdFee } from "@cosmjs/stargate"; import { useWallet } from "@cosmos-kit/react"; +import { useQueryClient } from "@tanstack/react-query"; import { useCallback } from "react"; import { updateAdminTx } from "lib/app-fns/tx/updateAdmin"; @@ -15,6 +16,7 @@ export interface UpdateAdminStreamParams { export const useUpdateAdminTx = () => { const { address, getCosmWasmClient } = useWallet(); + const queryClient = useQueryClient(); return useCallback( async ({ @@ -35,10 +37,15 @@ export const useUpdateAdminTx = () => { newAdmin, fee: estimatedFee, client, - onTxSucceed, + onTxSucceed: () => { + onTxSucceed?.(); + queryClient.invalidateQueries({ + queryKey: ["admin_by_contracts", "instantiateInfo"], + }); + }, onTxFailed, }); }, - [address, getCosmWasmClient] + [address, queryClient, getCosmWasmClient] ); }; diff --git a/src/lib/components/modal/contract/ClearAdminContract.tsx b/src/lib/components/modal/contract/ClearAdminContract.tsx index 1644d903d..feb7b080d 100644 --- a/src/lib/components/modal/contract/ClearAdminContract.tsx +++ b/src/lib/components/modal/contract/ClearAdminContract.tsx @@ -20,7 +20,7 @@ export const ClearAdminContract = ({ const clearAdminTx = useClearAdminTx(contractAddress); const proceed = useCallback(async () => { - const stream = await clearAdminTx({ onTxSucceed: () => {} }); + const stream = await clearAdminTx({}); if (stream) broadcast(stream); }, [broadcast, clearAdminTx]); From 60010918751fa576d67485500c7e07228d776212 Mon Sep 17 00:00:00 2001 From: poomthiti Date: Mon, 30 Jan 2023 17:38:51 +0700 Subject: [PATCH 04/16] chore: changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b89cf6c9e..1427348c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,6 +102,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Improvements +- [#135](https://github.com/alleslabs/celatone-frontend/pull/135) Invalidate queries after update/clear admin tx - [#123](https://github.com/alleslabs/celatone-frontend/pull/123) Refactor tables to use custom components - [#128](https://github.com/alleslabs/celatone-frontend/pull/128) Rewrite add to other list state and add default list to save to - [#114](https://github.com/alleslabs/celatone-frontend/pull/114) Handle wallet connection cases in instantiate button From 43aca0f0fb717758abf4d48e3d9db78c5720c1fa Mon Sep 17 00:00:00 2001 From: bkioshn Date: Mon, 30 Jan 2023 18:02:13 +0700 Subject: [PATCH 05/16] fix: decode message from query param --- src/lib/pages/execute/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/pages/execute/index.tsx b/src/lib/pages/execute/index.tsx index 080555dd1..12e567f96 100644 --- a/src/lib/pages/execute/index.tsx +++ b/src/lib/pages/execute/index.tsx @@ -12,9 +12,9 @@ import PageContainer from "lib/components/PageContainer"; import type { ContractAddr } from "lib/types"; import { getFirstQueryParam, - decode, jsonPrettify, jsonValidate, + libDecode, } from "lib/utils"; import { ExecuteArea } from "./components/ExecuteArea"; @@ -61,7 +61,7 @@ const Execute = () => { router.query.contract ) as ContractAddr; - let decodeMsg = decode(getFirstQueryParam(router.query.msg)); + let decodeMsg = libDecode(getFirstQueryParam(router.query.msg)); if (decodeMsg && jsonValidate(decodeMsg) !== null) { onContractSelect(contractAddressParam); decodeMsg = ""; From 92924741cffeb0265cda65240a054f340d382408 Mon Sep 17 00:00:00 2001 From: bkioshn Date: Mon, 30 Jan 2023 18:08:30 +0700 Subject: [PATCH 06/16] chore: add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15dd4c31c..fb6fdf219 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes +- [#136](https://github.com/alleslabs/celatone-frontend/pull/136) Fix decode message from query param in execute page - [#132](https://github.com/alleslabs/celatone-frontend/pull/132) Fix permission field in upload simulation - [#121](https://github.com/alleslabs/celatone-frontend/pull/121) Fix code snippet for query axios - [#129](https://github.com/alleslabs/celatone-frontend/pull/129) Fix wallet disconnection on network query change From a191a4cd623e6f533648583d5686e97b3896c4e6 Mon Sep 17 00:00:00 2001 From: poomthiti Date: Tue, 31 Jan 2023 11:02:17 +0700 Subject: [PATCH 07/16] fix: propoerly write invalidate queries --- src/lib/app-provider/tx/clearAdmin.ts | 11 ++++++++--- src/lib/app-provider/tx/updateAdmin.ts | 11 ++--------- src/lib/components/ContractSelectSection.tsx | 2 +- src/lib/components/modal/contract/SaveNewContract.tsx | 2 +- src/lib/model/contract.ts | 2 +- src/lib/pages/admin/index.tsx | 2 +- src/lib/pages/migrate/index.tsx | 2 +- 7 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/lib/app-provider/tx/clearAdmin.ts b/src/lib/app-provider/tx/clearAdmin.ts index 18c18b1d4..a9828f79b 100644 --- a/src/lib/app-provider/tx/clearAdmin.ts +++ b/src/lib/app-provider/tx/clearAdmin.ts @@ -30,9 +30,14 @@ export const useClearAdminTx = (contractAddress: ContractAddr) => { client, onTxSucceed: () => { onTxSucceed?.(); - queryClient.invalidateQueries({ - queryKey: ["admin_by_contracts", "instantiateInfo"], - }); + Promise.all([ + queryClient.invalidateQueries({ + queryKey: ["admin_by_contracts"], + }), + queryClient.invalidateQueries({ + queryKey: ["query", "instantiate_info"], + }), + ]); }, }); }, diff --git a/src/lib/app-provider/tx/updateAdmin.ts b/src/lib/app-provider/tx/updateAdmin.ts index aa703dc9e..bb9ee397e 100644 --- a/src/lib/app-provider/tx/updateAdmin.ts +++ b/src/lib/app-provider/tx/updateAdmin.ts @@ -1,6 +1,5 @@ import type { StdFee } from "@cosmjs/stargate"; import { useWallet } from "@cosmos-kit/react"; -import { useQueryClient } from "@tanstack/react-query"; import { useCallback } from "react"; import { updateAdminTx } from "lib/app-fns/tx/updateAdmin"; @@ -16,7 +15,6 @@ export interface UpdateAdminStreamParams { export const useUpdateAdminTx = () => { const { address, getCosmWasmClient } = useWallet(); - const queryClient = useQueryClient(); return useCallback( async ({ @@ -37,15 +35,10 @@ export const useUpdateAdminTx = () => { newAdmin, fee: estimatedFee, client, - onTxSucceed: () => { - onTxSucceed?.(); - queryClient.invalidateQueries({ - queryKey: ["admin_by_contracts", "instantiateInfo"], - }); - }, + onTxSucceed, onTxFailed, }); }, - [address, queryClient, getCosmWasmClient] + [address, getCosmWasmClient] ); }; diff --git a/src/lib/components/ContractSelectSection.tsx b/src/lib/components/ContractSelectSection.tsx index 990e6b075..7a8d895da 100644 --- a/src/lib/components/ContractSelectSection.tsx +++ b/src/lib/components/ContractSelectSection.tsx @@ -123,7 +123,7 @@ export const ContractSelectSection = observer( }); const { refetch } = useQuery( - ["query", "instantiateInfo", endpoint, contractAddress], + ["query", "instantiate_info", endpoint, contractAddress], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), { diff --git a/src/lib/components/modal/contract/SaveNewContract.tsx b/src/lib/components/modal/contract/SaveNewContract.tsx index aabff1be3..240c6812a 100644 --- a/src/lib/components/modal/contract/SaveNewContract.tsx +++ b/src/lib/components/modal/contract/SaveNewContract.tsx @@ -95,7 +95,7 @@ export function SaveNewContract({ list, buttonProps }: SaveNewContractProps) { // TODO: Abstract query const { refetch } = useQuery( - ["query", "instantiateInfo", endpoint, contractAddressState], + ["query", "instantiate_info", endpoint, contractAddressState], async () => queryInstantiateInfo( endpoint, diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index 773eaf1a2..acf17f8c1 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -107,7 +107,7 @@ export const useContractData = ( const { data: publicInfoBySlug } = usePublicProjectBySlug(publicInfo?.slug); const { data: instantiateInfo } = useQuery( - ["query", "instantiateInfo", endpoint, contractAddress], + ["query", "instantiate_info", endpoint, contractAddress], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), { enabled: !!currentChainRecord } diff --git a/src/lib/pages/admin/index.tsx b/src/lib/pages/admin/index.tsx index d50f17ba6..904eb583b 100644 --- a/src/lib/pages/admin/index.tsx +++ b/src/lib/pages/admin/index.tsx @@ -109,7 +109,7 @@ const UpdateAdmin = () => { * @remarks Contract admin validation */ useQuery( - ["query", "instantiateInfo", endpoint, contractAddressParam], + ["query", "instantiate_info", endpoint, contractAddressParam], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddressParam), { diff --git a/src/lib/pages/migrate/index.tsx b/src/lib/pages/migrate/index.tsx index d7a62f35b..04a109808 100644 --- a/src/lib/pages/migrate/index.tsx +++ b/src/lib/pages/migrate/index.tsx @@ -62,7 +62,7 @@ const Migrate = () => { ); useQuery( - ["query", "instantiateInfo", endpoint, contractAddress], + ["query", "instantiate_info", endpoint, contractAddress], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), { From dfd0fb8cd3f00ba08b93907760ddb18787fda6ba Mon Sep 17 00:00:00 2001 From: bkioshn Date: Tue, 31 Jan 2023 11:12:21 +0700 Subject: [PATCH 08/16] fix: remove execute table, fix migrate talbe map key --- src/lib/model/contract.ts | 16 ++++++++++------ .../components/tables/migration/index.tsx | 4 ++-- src/lib/pages/contract-details/index.tsx | 9 ++++----- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index 773eaf1a2..76166abc1 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -11,7 +11,6 @@ import { queryInstantiateInfo, } from "lib/services/contract"; import { - useExecuteTxsCountByContractAddress, useInstantiatedCountByUserQuery, useInstantiateDetailByContractQuery, useInstantiatedListByUserQuery, @@ -167,26 +166,31 @@ export const useContractData = ( }; }; +/** + * @remark + * Remove execute table for now + * + */ export const useContractDetailsTableCounts = ( contractAddress: ContractAddr ) => { - const { data: executeCount = 0, refetch: refetchExecute } = - useExecuteTxsCountByContractAddress(contractAddress); + // const { data: executeCount = 0, refetch: refetchExecute } = + // useExecuteTxsCountByContractAddress(contractAddress); const { data: migrationCount = 0, refetch: refetchMigration } = useMigrationHistoriesCountByContractAddress(contractAddress); const { data: transactionsCount = 0, refetch: refetchTransactions } = useTxsCountByContractAddress(contractAddress); - const { data: relatedProposalsCount = 0, refetch: refetchRelatedProposals } = useRelatedProposalsCountByContractAddress(contractAddress); + return { tableCounts: { - executeCount, + // executeCount, migrationCount, transactionsCount, relatedProposalsCount, }, - refetchExecute, + // refetchExecute, refetchMigration, refetchTransactions, refetchRelatedProposals, diff --git a/src/lib/pages/contract-details/components/tables/migration/index.tsx b/src/lib/pages/contract-details/components/tables/migration/index.tsx index 7589e4d95..3ce59d33d 100644 --- a/src/lib/pages/contract-details/components/tables/migration/index.tsx +++ b/src/lib/pages/contract-details/components/tables/migration/index.tsx @@ -68,9 +68,9 @@ export const MigrationTable = ({ return ( - {migrationHistories.map((history) => ( + {migrationHistories.map((history, index) => ( diff --git a/src/lib/pages/contract-details/index.tsx b/src/lib/pages/contract-details/index.tsx index 44d2984f7..eaca0da08 100644 --- a/src/lib/pages/contract-details/index.tsx +++ b/src/lib/pages/contract-details/index.tsx @@ -26,7 +26,6 @@ import { ContractDesc } from "./components/contract-description"; import { ContractTop } from "./components/ContractTop"; import { InstantiateInfo } from "./components/InstantiateInfo"; import { JsonInfo } from "./components/JsonInfo"; -import { ExecuteTable } from "./components/tables/execute"; import { MigrationTable } from "./components/tables/migration"; import { RelatedProposalsTable } from "./components/tables/related-proposals"; import { TransactionsTable } from "./components/tables/transactions"; @@ -44,7 +43,6 @@ const ContractDetailsBody = observer( const tableHeaderId = "contractDetailTableHeader"; const { tableCounts, - refetchExecute, refetchMigration, refetchTransactions, refetchRelatedProposals, @@ -95,7 +93,7 @@ const ContractDetailsBody = observer( Transactions - Executes + {/* Executes */} Migration Related Proposals @@ -110,14 +108,15 @@ const ContractDetailsBody = observer( refetchCount={refetchTransactions} /> - + {/* Remove execute table for now */} + {/* - + */} Date: Tue, 31 Jan 2023 11:20:07 +0700 Subject: [PATCH 09/16] chore: add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15dd4c31c..356192ada 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes +- [#138](https://github.com/alleslabs/celatone-frontend/pull/138) Remove execute table in contract details page (due to data issue) and fix migrate table map key - [#132](https://github.com/alleslabs/celatone-frontend/pull/132) Fix permission field in upload simulation - [#121](https://github.com/alleslabs/celatone-frontend/pull/121) Fix code snippet for query axios - [#129](https://github.com/alleslabs/celatone-frontend/pull/129) Fix wallet disconnection on network query change From 560c3241cf7867006c61575a385ff20cd24ab3a6 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Tue, 31 Jan 2023 11:22:06 +0700 Subject: [PATCH 10/16] fix: change Date to Dayjs --- CHANGELOG.md | 1 + src/lib/app-fns/tx/execute.tsx | 3 ++- .../select-contract/SelectContractAdmin.tsx | 3 ++- src/lib/model/contract.ts | 7 +++--- .../home/components/RecentlyViewContracts.tsx | 9 ++++---- src/lib/pages/query/components/QueryArea.tsx | 3 ++- src/lib/services/contract.ts | 3 ++- src/lib/stores/contract.ts | 19 +++++++-------- src/lib/types/code.ts | 6 +++-- src/lib/types/contract.ts | 12 ++++++---- src/lib/types/tx/transaction.ts | 6 +++-- src/lib/utils/date.ts | 23 ++++++++----------- src/lib/utils/formatter/camelToSnake.ts | 5 ++-- src/lib/utils/formatter/snakeToCamel.ts | 5 ++-- 14 files changed, 58 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15dd4c31c..b10514d30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes +- [#139](https://github.com/alleslabs/celatone-frontend/pull/139) Fix Date to Dayjs - [#132](https://github.com/alleslabs/celatone-frontend/pull/132) Fix permission field in upload simulation - [#121](https://github.com/alleslabs/celatone-frontend/pull/121) Fix code snippet for query axios - [#129](https://github.com/alleslabs/celatone-frontend/pull/129) Fix wallet disconnection on network query change diff --git a/src/lib/app-fns/tx/execute.tsx b/src/lib/app-fns/tx/execute.tsx index 0b2182406..1f842cd70 100644 --- a/src/lib/app-fns/tx/execute.tsx +++ b/src/lib/app-fns/tx/execute.tsx @@ -5,6 +5,7 @@ import type { } from "@cosmjs/cosmwasm-stargate"; import type { Coin, StdFee } from "@cosmjs/stargate"; import { pipe } from "@rx-stream/pipe"; +import dayjs from "dayjs"; import { MdCheckCircle } from "react-icons/md"; import type { Observable } from "rxjs"; @@ -52,7 +53,7 @@ export const executeContractTx = ({ sender: address, contractAddress, msg: encode(JSON.stringify(msg)), // base64 - timestamp: new Date(), + timestamp: dayjs(), }); return { value: null, diff --git a/src/lib/components/modal/select-contract/SelectContractAdmin.tsx b/src/lib/components/modal/select-contract/SelectContractAdmin.tsx index 0368bb8f7..248156645 100644 --- a/src/lib/components/modal/select-contract/SelectContractAdmin.tsx +++ b/src/lib/components/modal/select-contract/SelectContractAdmin.tsx @@ -11,6 +11,7 @@ import { Heading, } from "@chakra-ui/react"; import { useWallet } from "@cosmos-kit/react"; +import dayjs from "dayjs"; import { MdList, MdSwapHoriz } from "react-icons/md"; import { ADMIN_SPECIAL_SLUG } from "lib/data"; @@ -42,7 +43,7 @@ export const SelectContractAdmin = ({ ...contract, ...getContractLocalInfo(contract.contractAddress), })), - lastUpdated: new Date(), + lastUpdated: dayjs(), isInfoEditable: false, isContractRemovable: false, }; diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index 773eaf1a2..7de1814cb 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -1,5 +1,6 @@ import { useWallet } from "@cosmos-kit/react"; import { useQuery } from "@tanstack/react-query"; +import dayjs from "dayjs"; import { useCelatoneApp } from "lib/app-provider"; import { INSTANTIATED_LIST_NAME } from "lib/data"; @@ -66,7 +67,7 @@ export const useInstantiatedByMe = (enable: boolean): ContractListInfo => { })), name: INSTANTIATED_LIST_NAME, slug: formatSlugName(INSTANTIATED_LIST_NAME), - lastUpdated: new Date(), + lastUpdated: dayjs(), isInfoEditable: false, isContractRemovable: false, }; @@ -83,11 +84,11 @@ export const useInstantiatedMockInfoByMe = (): ContractListInfo => { contractAddress: "" as ContractAddr, instantiator: "", label: "", - created: new Date(0), + created: dayjs(0), })), name: INSTANTIATED_LIST_NAME, slug: formatSlugName(INSTANTIATED_LIST_NAME), - lastUpdated: new Date(), + lastUpdated: dayjs(), isInfoEditable: false, isContractRemovable: false, }; diff --git a/src/lib/pages/home/components/RecentlyViewContracts.tsx b/src/lib/pages/home/components/RecentlyViewContracts.tsx index 6eede513c..2d3dc5c82 100644 --- a/src/lib/pages/home/components/RecentlyViewContracts.tsx +++ b/src/lib/pages/home/components/RecentlyViewContracts.tsx @@ -1,4 +1,5 @@ import { Heading, Box, Flex, Text } from "@chakra-ui/react"; +import dayjs from "dayjs"; import { ContractListTable } from "lib/pages/contract-list/components/ContractListTable"; import type { ContractAddr } from "lib/types"; @@ -14,7 +15,7 @@ const contracts = [ description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sed facilisis facilisis risus. Ut volutpat accumsan massa eget consequat, id egestas nulla.", label: "label1", - created: new Date(), + created: dayjs(), }, { contractAddress: @@ -24,7 +25,7 @@ const contracts = [ instantiator: "terra18kw0z0nmpk9drz4qxq8y7xvh05tr7spyzja3rq", description: "Lorem ipsum dolor id egestas nulla.", label: "label2", - created: new Date(), + created: dayjs(), }, { contractAddress: @@ -34,7 +35,7 @@ const contracts = [ instantiator: "terra18kw0z0nmpk9drz4qxq8y7xvh05tr7spyzja3rq", description: "", label: "label3", - created: new Date(), + created: dayjs(), }, { contractAddress: @@ -45,7 +46,7 @@ const contracts = [ description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. id egestas nulla.", label: "label4", - created: new Date(), + created: dayjs(), }, ]; export const RecentlyViewContracts = () => { diff --git a/src/lib/pages/query/components/QueryArea.tsx b/src/lib/pages/query/components/QueryArea.tsx index 473939796..846c899e3 100644 --- a/src/lib/pages/query/components/QueryArea.tsx +++ b/src/lib/pages/query/components/QueryArea.tsx @@ -3,6 +3,7 @@ import { Box, Flex, Spacer, Button, ButtonGroup, Text } from "@chakra-ui/react"; import { useWallet } from "@cosmos-kit/react"; import { useQuery } from "@tanstack/react-query"; import type { AxiosError } from "axios"; +import dayjs from "dayjs"; import dynamic from "next/dynamic"; import { useEffect, useState } from "react"; @@ -58,7 +59,7 @@ export const QueryArea = ({ sender: address, contractAddress, msg: encode(msg), - timestamp: new Date(), + timestamp: dayjs(), }); }, onError(err: AxiosError) { diff --git a/src/lib/services/contract.ts b/src/lib/services/contract.ts index bddb77143..1b0fd4d88 100644 --- a/src/lib/services/contract.ts +++ b/src/lib/services/contract.ts @@ -1,4 +1,5 @@ import axios from "axios"; +import type { Dayjs } from "dayjs"; import type { GraphQLClient } from "graphql-request"; import { CELATONE_API_ENDPOINT, getChainApiPath } from "env"; @@ -42,7 +43,7 @@ export interface InstantiateInfo { admin?: HumanAddr | ContractAddr; label: string; createdHeight: number; - createdTime: Option; + createdTime: Option; ibcPortId: string; raw: ContractResponse; } diff --git a/src/lib/stores/contract.ts b/src/lib/stores/contract.ts index f200eaa98..353f4116c 100644 --- a/src/lib/stores/contract.ts +++ b/src/lib/stores/contract.ts @@ -1,3 +1,5 @@ +import type { Dayjs } from "dayjs"; +import dayjs from "dayjs"; import { makeAutoObservable } from "mobx"; import { isHydrated, makePersistable } from "mobx-persist-store"; @@ -19,7 +21,7 @@ interface ContractList { name: string; slug: string; contracts: ContractAddr[]; - lastUpdated: Date; + lastUpdated: Dayjs; isInfoEditable: boolean; isContractRemovable: boolean; } @@ -32,8 +34,7 @@ export const cmpContractListInfo = ( a: ContractListInfo, b: ContractListInfo ) => { - if (a.lastUpdated !== b.lastUpdated) - return b.lastUpdated.getTime() - a.lastUpdated.getTime(); + if (a.lastUpdated !== b.lastUpdated) return b.lastUpdated.diff(a.lastUpdated); return a.slug.localeCompare(b.slug); }; @@ -43,7 +44,7 @@ export interface Activity { sender: string | undefined; contractAddress: ContractAddr; msg: string; // base64 - timestamp: Date; + timestamp: Dayjs; } export class ContractStore { @@ -54,7 +55,7 @@ export class ContractStore { name: SAVED_LIST_NAME, slug: formatSlugName(SAVED_LIST_NAME), contracts: [], - lastUpdated: new Date(), + lastUpdated: dayjs(), isInfoEditable: false, isContractRemovable: true, }, @@ -160,7 +161,7 @@ export class ContractStore { name: name.trim(), slug: formatSlugName(name), contracts: [], - lastUpdated: new Date(), + lastUpdated: dayjs(), isInfoEditable: true, isContractRemovable: true, }, @@ -192,7 +193,7 @@ export class ContractStore { list.name = newName; list.slug = formatSlugName(newName); - list.lastUpdated = new Date(); + list.lastUpdated = dayjs(); } } @@ -332,7 +333,7 @@ export class ContractStore { if (!list) return; list.contracts = Array.from(new Set(list.contracts).add(contractAddress)); - list.lastUpdated = new Date(); + list.lastUpdated = dayjs(); } private removeContractFromList( @@ -346,7 +347,7 @@ export class ContractStore { if (!list) return; list.contracts = list.contracts.filter((addr) => addr !== contractAddress); - list.lastUpdated = new Date(); + list.lastUpdated = dayjs(); } addActivity(userKey: string, activity: Activity) { diff --git a/src/lib/types/code.ts b/src/lib/types/code.ts index a0c2b742e..55a6f7b7d 100644 --- a/src/lib/types/code.ts +++ b/src/lib/types/code.ts @@ -1,3 +1,5 @@ +import type { Dayjs } from "dayjs"; + import type { CodeLocalInfo } from "lib/stores/code"; import type { HumanAddr, ContractAddr, Option } from "lib/types"; @@ -22,7 +24,7 @@ export interface CodeInfo extends CodeLocalInfo { interface CodeProposal { proposalId: number; height: Option; - created: Date; + created: Dayjs; } export interface CodeData { @@ -31,7 +33,7 @@ export interface CodeData { uploader: ContractAddr | HumanAddr; hash: Option; height: Option; - created: Date; + created: Dayjs; proposal: Option; instantiatePermission: InstantiatePermission; permissionAddresses: PermissionAddresses; diff --git a/src/lib/types/contract.ts b/src/lib/types/contract.ts index ed13500ca..ea7d185d2 100644 --- a/src/lib/types/contract.ts +++ b/src/lib/types/contract.ts @@ -1,11 +1,13 @@ +import type { Dayjs } from "dayjs"; + import type { ContractLocalInfo } from "lib/stores/contract"; import type { ContractAddr, HumanAddr, Option } from "lib/types"; export interface ContractInfo extends ContractLocalInfo { admin: Option; - instantiated: Date; + instantiated: Dayjs; latestUpdator: Option; - latestUpdated: Date; + latestUpdated: Dayjs; } export interface ContractInstances { @@ -32,7 +34,7 @@ export interface ContractMigrationHistory { codeDescription?: string; sender: HumanAddr | ContractAddr; height: number; - timestamp: Date; + timestamp: Dayjs; remark: MigrationRemark; } @@ -58,8 +60,8 @@ export interface ContractRelatedProposals { proposalId: number; title: string; status: ProposalStatus; - votingEndTime: Date; - depositEndTime: Date; + votingEndTime: Dayjs; + depositEndTime: Dayjs; resolvedHeight: number | null | undefined; type: ProposalType; proposer: HumanAddr | ContractAddr | undefined; diff --git a/src/lib/types/tx/transaction.ts b/src/lib/types/tx/transaction.ts index ee856fcfa..96df275da 100644 --- a/src/lib/types/tx/transaction.ts +++ b/src/lib/types/tx/transaction.ts @@ -1,3 +1,5 @@ +import type { Dayjs } from "dayjs"; + import type { ContractAddr, HumanAddr } from "lib/types"; import type { @@ -25,7 +27,7 @@ export enum MsgFurtherAction { export interface PastTransaction { hash: string; messages: Message[]; - created: Date; + created: Dayjs; success: boolean; actionMsgType: ActionMsgType; furtherAction: MsgFurtherAction; @@ -62,7 +64,7 @@ export interface ExecuteTransaction { messages: Message[]; sender: ContractAddr | HumanAddr; height: number; - created: Date; + created: Dayjs; success: boolean; } diff --git a/src/lib/utils/date.ts b/src/lib/utils/date.ts index abf4303dc..85fe2305f 100644 --- a/src/lib/utils/date.ts +++ b/src/lib/utils/date.ts @@ -1,23 +1,18 @@ +import type { Dayjs } from "dayjs"; import dayjs from "dayjs"; import type { Option } from "lib/types"; -export const formatUTC = (timestamp: string | Date) => { - const localDate = - typeof timestamp === "string" ? timestamp.concat("Z") : timestamp; - return dayjs(localDate).utc().format("MMM DD, YYYY, h:mm:ss A [(UTC)]"); -}; +export const formatUTC = (timestamp: string | Dayjs) => + dayjs(timestamp).utc(true).format("MMM DD, YYYY, h:mm:ss A [(UTC)]"); -export const dateFromNow = (timestamp: string | Date) => { - const localDate = - typeof timestamp === "string" ? timestamp.concat("Z") : timestamp; - return dayjs(localDate).fromNow(); -}; +export const dateFromNow = (timestamp: string | Dayjs) => + dayjs(timestamp).utc(true).fromNow(); -export const parseDate = (date: string) => new Date(`${date}Z`); +export const parseDate = (date: string) => dayjs(date).utc(true); -export const parseDateOpt = (dateOpt: Option): Option => +export const parseDateOpt = (dateOpt: Option): Option => dateOpt ? parseDate(dateOpt) : undefined; -export const parseDateDefault = (dateOpt: Option): Date => - dateOpt ? parseDate(dateOpt) : new Date(0); +export const parseDateDefault = (dateOpt: Option): Dayjs => + dateOpt ? parseDate(dateOpt) : dayjs(0); diff --git a/src/lib/utils/formatter/camelToSnake.ts b/src/lib/utils/formatter/camelToSnake.ts index 4c264834a..a1e59449a 100644 --- a/src/lib/utils/formatter/camelToSnake.ts +++ b/src/lib/utils/formatter/camelToSnake.ts @@ -1,3 +1,4 @@ +import { Dayjs } from "dayjs"; import mapObject from "map-obj"; import { snakeCase } from "snake-case"; @@ -9,8 +10,8 @@ export const camelToSnake = (obj: unknown): unknown => { return obj; } - // Ignore Date, whose typeof is `object` too. - if (obj instanceof Date) { + // Ignore Dayjs, whose typeof is `object` too. + if (obj instanceof Dayjs) { return obj; } diff --git a/src/lib/utils/formatter/snakeToCamel.ts b/src/lib/utils/formatter/snakeToCamel.ts index bc82b7fe1..949f1f866 100644 --- a/src/lib/utils/formatter/snakeToCamel.ts +++ b/src/lib/utils/formatter/snakeToCamel.ts @@ -1,4 +1,5 @@ import camelCase from "camelcase"; +import { Dayjs } from "dayjs"; import mapObject from "map-obj"; // Convert snake case to camel case of an object @@ -9,8 +10,8 @@ export const snakeToCamel = (obj: unknown): unknown => { return obj; } - // Ignore Date, whose typeof is `object` too. - if (obj instanceof Date) { + // Ignore Dayjs, whose typeof is `object` too. + if (obj instanceof Dayjs) { return obj; } // Array of object From 9b5059f106d44eaa50fb418f0d84d09edb44dd4c Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Tue, 31 Jan 2023 11:26:54 +0700 Subject: [PATCH 11/16] fix: change changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b10514d30..722d0e7bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,6 +102,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Improvements +- [#139](https://github.com/alleslabs/celatone-frontend/pull/139) Fix Date to Dayjs - [#123](https://github.com/alleslabs/celatone-frontend/pull/123) Refactor tables to use custom components - [#128](https://github.com/alleslabs/celatone-frontend/pull/128) Rewrite add to other list state and add default list to save to - [#114](https://github.com/alleslabs/celatone-frontend/pull/114) Handle wallet connection cases in instantiate button @@ -114,7 +115,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes -- [#139](https://github.com/alleslabs/celatone-frontend/pull/139) Fix Date to Dayjs - [#132](https://github.com/alleslabs/celatone-frontend/pull/132) Fix permission field in upload simulation - [#121](https://github.com/alleslabs/celatone-frontend/pull/121) Fix code snippet for query axios - [#129](https://github.com/alleslabs/celatone-frontend/pull/129) Fix wallet disconnection on network query change From 98639bafefa7057ac741ecbd848136eb73c492c3 Mon Sep 17 00:00:00 2001 From: Sawit Trisirisatayawong Date: Wed, 1 Feb 2023 09:17:29 +0700 Subject: [PATCH 12/16] fix: fix comments --- src/lib/model/contract.ts | 13 +++++-------- .../contract-details/components/InstantiateInfo.tsx | 6 +++--- src/lib/services/contract.ts | 8 ++++---- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index 5a21c1ea7..e141468ce 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -5,10 +5,7 @@ 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 { - ContractVersionInfo, - InstantiateInfo, -} from "lib/services/contract"; +import type { ContractCw2Info, InstantiateInfo } from "lib/services/contract"; import { queryContractInfo, queryContractBalances, @@ -43,7 +40,7 @@ export interface ContractData { chainId: string; codeInfo: Option; contractLocalInfo: Option; - contractInfo: Option; + contractCw2Info: Option; instantiateInfo: Option; publicProject: { publicInfo: Option; @@ -118,8 +115,8 @@ export const useContractData = ( { enabled: !!currentChainRecord } ); - const { data: contractInfo } = useQuery( - ["query", "contractInfo", endpoint, contractAddress], + const { data: contractCw2Info } = useQuery( + ["query", "contractCw2Info", endpoint, contractAddress], async () => queryContractInfo(endpoint, contractAddress), { enabled: !!currentChainRecord } ); @@ -166,7 +163,7 @@ export const useContractData = ( chainId: currentChainRecord.chain.chain_id, codeInfo, contractLocalInfo, - contractInfo, + 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 336536dde..7a77e84a0 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -48,7 +48,7 @@ const RenderPortId = ({ portId }: { portId: string }) => { export const InstantiateInfo = ({ contractData: { - contractInfo, + contractCw2Info, instantiateInfo, chainId, codeInfo, @@ -86,9 +86,9 @@ export const InstantiateInfo = ({ - {contractInfo ? ( + {contractCw2Info ? ( - {contractInfo?.contract} ({contractInfo?.version}) + {contractCw2Info?.contract} ({contractCw2Info?.version}) ) : ( diff --git a/src/lib/services/contract.ts b/src/lib/services/contract.ts index 57ec8c89f..8d4bb1b55 100644 --- a/src/lib/services/contract.ts +++ b/src/lib/services/contract.ts @@ -12,11 +12,11 @@ import type { } from "lib/types"; import { encode, parseDateDefault } from "lib/utils"; -export interface ContractVersionInfoRaw { +export interface ContractCw2InfoRaw { data: string; } -export interface ContractVersionInfo { +export interface ContractCw2Info { contract: string; version: string; } @@ -82,12 +82,12 @@ export const queryContractInfo = async ( endpoint: string, contractAddress: ContractAddr ) => { - const { data } = await axios.get( + const { data } = await axios.get( `${endpoint}/cosmwasm/wasm/v1/contract/${contractAddress}/raw/Y29udHJhY3RfaW5mbw%3D%3D` ); return JSON.parse( Buffer.from(data.data, "base64").toString("binary") - ) as ContractVersionInfo; + ) as ContractCw2Info; }; export const queryInstantiateInfo = async ( From b9e96b0bbc634902472a70ac37d63b310498e680 Mon Sep 17 00:00:00 2001 From: bkioshn Date: Wed, 1 Feb 2023 10:35:57 +0700 Subject: [PATCH 13/16] fix: remove migration table key --- CHANGELOG.md | 2 +- .../contract-details/components/tables/migration/index.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 356192ada..b58011066 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,7 +114,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes -- [#138](https://github.com/alleslabs/celatone-frontend/pull/138) Remove execute table in contract details page (due to data issue) and fix migrate table map key +- [#138](https://github.com/alleslabs/celatone-frontend/pull/138) Remove execute table in contract details page (due to data issue) - [#132](https://github.com/alleslabs/celatone-frontend/pull/132) Fix permission field in upload simulation - [#121](https://github.com/alleslabs/celatone-frontend/pull/121) Fix code snippet for query axios - [#129](https://github.com/alleslabs/celatone-frontend/pull/129) Fix wallet disconnection on network query change diff --git a/src/lib/pages/contract-details/components/tables/migration/index.tsx b/src/lib/pages/contract-details/components/tables/migration/index.tsx index 3ce59d33d..7589e4d95 100644 --- a/src/lib/pages/contract-details/components/tables/migration/index.tsx +++ b/src/lib/pages/contract-details/components/tables/migration/index.tsx @@ -68,9 +68,9 @@ export const MigrationTable = ({ return ( - {migrationHistories.map((history, index) => ( + {migrationHistories.map((history) => ( From 355e3801b7183697eff0e2554e20716f15e0263e Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Wed, 1 Feb 2023 10:38:13 +0700 Subject: [PATCH 14/16] fix: change query fn name --- src/lib/model/contract.ts | 4 ++-- src/lib/services/contract.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index e141468ce..a98fb8c3a 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -7,7 +7,7 @@ import { useCodeStore, useContractStore, useLCDEndpoint } from "lib/hooks"; import { useAssetInfos } from "lib/services/assetService"; import type { ContractCw2Info, InstantiateInfo } from "lib/services/contract"; import { - queryContractInfo, + queryContractCw2Info, queryContractBalances, queryInstantiateInfo, } from "lib/services/contract"; @@ -117,7 +117,7 @@ export const useContractData = ( const { data: contractCw2Info } = useQuery( ["query", "contractCw2Info", endpoint, contractAddress], - async () => queryContractInfo(endpoint, contractAddress), + async () => queryContractCw2Info(endpoint, contractAddress), { enabled: !!currentChainRecord } ); diff --git a/src/lib/services/contract.ts b/src/lib/services/contract.ts index 8d4bb1b55..d40f3da3c 100644 --- a/src/lib/services/contract.ts +++ b/src/lib/services/contract.ts @@ -78,7 +78,7 @@ export const queryContract = async ( return data; }; -export const queryContractInfo = async ( +export const queryContractCw2Info = async ( endpoint: string, contractAddress: ContractAddr ) => { From 748ed9f3e80879b0b182199180816b1f8794ec4b Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Wed, 1 Feb 2023 10:44:01 +0700 Subject: [PATCH 15/16] fix: comments --- src/lib/model/contract.ts | 2 +- .../pages/contract-details/components/InstantiateInfo.tsx | 2 +- src/lib/services/contract.ts | 6 ++---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index a98fb8c3a..7d8a9764f 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -116,7 +116,7 @@ export const useContractData = ( ); const { data: contractCw2Info } = useQuery( - ["query", "contractCw2Info", endpoint, contractAddress], + ["query", "contract_cw2_info", endpoint, contractAddress], async () => queryContractCw2Info(endpoint, contractAddress), { enabled: !!currentChainRecord } ); diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index 7a77e84a0..871f029b7 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -88,7 +88,7 @@ export const InstantiateInfo = ({ {contractCw2Info ? ( - {contractCw2Info?.contract} ({contractCw2Info?.version}) + {contractCw2Info.contract} ({contractCw2Info.version}) ) : ( diff --git a/src/lib/services/contract.ts b/src/lib/services/contract.ts index d40f3da3c..2a10ad9ca 100644 --- a/src/lib/services/contract.ts +++ b/src/lib/services/contract.ts @@ -10,7 +10,7 @@ import type { Option, PublicInfo, } from "lib/types"; -import { encode, parseDateDefault } from "lib/utils"; +import { encode, libDecode, parseDateDefault } from "lib/utils"; export interface ContractCw2InfoRaw { data: string; @@ -85,9 +85,7 @@ export const queryContractCw2Info = async ( const { data } = await axios.get( `${endpoint}/cosmwasm/wasm/v1/contract/${contractAddress}/raw/Y29udHJhY3RfaW5mbw%3D%3D` ); - return JSON.parse( - Buffer.from(data.data, "base64").toString("binary") - ) as ContractCw2Info; + return JSON.parse(libDecode(data.data)) as ContractCw2Info; }; export const queryInstantiateInfo = async ( From 3b39c57db17813f0af52c25c8d573fd2476bb222 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Wed, 1 Feb 2023 11:08:30 +0700 Subject: [PATCH 16/16] fix: as comments --- src/lib/utils/date.ts | 11 +++++------ src/lib/utils/formatter/camelToSnake.ts | 5 ++--- src/lib/utils/formatter/snakeToCamel.ts | 5 ++--- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/lib/utils/date.ts b/src/lib/utils/date.ts index 85fe2305f..3ef7eb69b 100644 --- a/src/lib/utils/date.ts +++ b/src/lib/utils/date.ts @@ -3,12 +3,6 @@ import dayjs from "dayjs"; import type { Option } from "lib/types"; -export const formatUTC = (timestamp: string | Dayjs) => - dayjs(timestamp).utc(true).format("MMM DD, YYYY, h:mm:ss A [(UTC)]"); - -export const dateFromNow = (timestamp: string | Dayjs) => - dayjs(timestamp).utc(true).fromNow(); - export const parseDate = (date: string) => dayjs(date).utc(true); export const parseDateOpt = (dateOpt: Option): Option => @@ -16,3 +10,8 @@ export const parseDateOpt = (dateOpt: Option): Option => export const parseDateDefault = (dateOpt: Option): Dayjs => dateOpt ? parseDate(dateOpt) : dayjs(0); + +export const formatUTC = (date: Dayjs) => + date.format("MMM DD, YYYY, h:mm:ss A [(UTC)]"); + +export const dateFromNow = (date: Dayjs) => date.fromNow(); diff --git a/src/lib/utils/formatter/camelToSnake.ts b/src/lib/utils/formatter/camelToSnake.ts index a1e59449a..4c264834a 100644 --- a/src/lib/utils/formatter/camelToSnake.ts +++ b/src/lib/utils/formatter/camelToSnake.ts @@ -1,4 +1,3 @@ -import { Dayjs } from "dayjs"; import mapObject from "map-obj"; import { snakeCase } from "snake-case"; @@ -10,8 +9,8 @@ export const camelToSnake = (obj: unknown): unknown => { return obj; } - // Ignore Dayjs, whose typeof is `object` too. - if (obj instanceof Dayjs) { + // Ignore Date, whose typeof is `object` too. + if (obj instanceof Date) { return obj; } diff --git a/src/lib/utils/formatter/snakeToCamel.ts b/src/lib/utils/formatter/snakeToCamel.ts index 949f1f866..bc82b7fe1 100644 --- a/src/lib/utils/formatter/snakeToCamel.ts +++ b/src/lib/utils/formatter/snakeToCamel.ts @@ -1,5 +1,4 @@ import camelCase from "camelcase"; -import { Dayjs } from "dayjs"; import mapObject from "map-obj"; // Convert snake case to camel case of an object @@ -10,8 +9,8 @@ export const snakeToCamel = (obj: unknown): unknown => { return obj; } - // Ignore Dayjs, whose typeof is `object` too. - if (obj instanceof Dayjs) { + // Ignore Date, whose typeof is `object` too. + if (obj instanceof Date) { return obj; } // Array of object