From 27fa51cf64995380729113c83d334751ad191bb9 Mon Sep 17 00:00:00 2001 From: bkioshn Date: Sat, 24 Dec 2022 20:07:07 +0700 Subject: [PATCH 01/11] feat: wireup instantiate info --- .../components/InstantiateInfo.tsx | 95 ++++++++++++++++++- src/lib/utils/addressType.ts | 13 +++ src/lib/utils/date.ts | 11 +++ src/lib/utils/index.ts | 2 + 4 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 src/lib/utils/addressType.ts create mode 100644 src/lib/utils/date.ts diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index f99b57b0b..95aa58695 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -1,6 +1,11 @@ import { Flex, Heading } from "@chakra-ui/react"; +import { useWallet } from "@cosmos-kit/react"; +import router from "next/router"; import { ExplorerLink } from "lib/components/ExplorerLink"; +import { useContractDetail } from "lib/model/contract"; +import type { ContractAddr } from "lib/types"; +import { addressType, date, dateFromNow, getFirstQueryParam } from "lib/utils"; import { LabelText } from "./LabelText"; @@ -10,22 +15,102 @@ export const InstantiateInfo = () => { * - Make an interface * - All these are mockups, Wireup with real data and map render LabelText */ + + const contractAddress = getFirstQueryParam(router.query.contractAddress); + const { currentChainName } = useWallet(); + const contractDetail = useContractDetail(contractAddress as ContractAddr); + + if (!contractDetail || !contractDetail.instantiateInfo) return null; + + const renderAddressType = () => { + switch (addressType(contractAddress, currentChainName)) { + case "contract_address": + return "(Contract Address)"; + case "user_address": + return "(Wallet Address)"; + default: + break; + } + return ""; + }; + return ( - + Instantiate Info + + {/* TODO - network */} phoenix-1 - + + {contractDetail.instantiateInfo && ( + + + + )} + + - - wasm.terra1te47jv6pg272n8unq490nvhh5m43v5n5kxfgrztly2tmkmqxzw8qphrjx2 + + + + + {contractDetail.initTxHash && ( + + + + )} + + {/* TODO - helper text */} + {contractDetail.initProposalId && ( + + + + )} + + {contractDetail.instantiateInfo?.admin && ( + + + + )} + + {contractDetail.instantiateInfo?.ibcPortId && ( + + {contractDetail.instantiateInfo?.ibcPortId} + + )} ); }; diff --git a/src/lib/utils/addressType.ts b/src/lib/utils/addressType.ts new file mode 100644 index 000000000..f800dfd40 --- /dev/null +++ b/src/lib/utils/addressType.ts @@ -0,0 +1,13 @@ +export const addressType = (address: string, chainName: string) => { + if (chainName === "osmosis" || chainName === "osmosistestnet") { + switch (address.length) { + case 43: + return "user_address"; + case 63: + return "contract_address"; + default: + break; + } + } + return undefined; +}; diff --git a/src/lib/utils/date.ts b/src/lib/utils/date.ts new file mode 100644 index 000000000..f88195dd4 --- /dev/null +++ b/src/lib/utils/date.ts @@ -0,0 +1,11 @@ +import dayjs from "dayjs"; + +export const date = (timestamp: string) => { + const localDate = timestamp.concat("Z"); + return dayjs(localDate).utc().format("MMM DD, YYYY, h:mm:ss A [(UTC)]"); +}; + +export const dateFromNow = (timestamp: string) => { + const localDate = timestamp.concat("Z"); + return dayjs(localDate).fromNow(); +}; diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 0cf995c31..560b6f49d 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -10,3 +10,5 @@ export * from "./isDecimalNumber"; export * from "./extractMsgType"; export * from "./redo"; export * from "./scrollTop"; +export * from "./date"; +export * from "./addressType"; From 65436806ccddda64bf709d42aec0465e62944142 Mon Sep 17 00:00:00 2001 From: bkioshn Date: Mon, 26 Dec 2022 10:45:45 +0700 Subject: [PATCH 02/11] chore: add todo --- .../pages/contract-details/components/InstantiateInfo.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index 95aa58695..5d09bd437 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -40,7 +40,7 @@ export const InstantiateInfo = () => { Instantiate Info - {/* TODO - network */} + {/* TODO - Implement network */} phoenix-1 {contractDetail.instantiateInfo && ( @@ -67,6 +67,7 @@ export const InstantiateInfo = () => { /> + {/* TODO - Implement code description */} { )} - {/* TODO - helper text */} + {/* TODO - Implement proposal name */} {contractDetail.initProposalId && ( Date: Mon, 26 Dec 2022 16:59:30 +0700 Subject: [PATCH 03/11] fix: wireup leftover data --- .../contract-details/components/InstantiateInfo.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index 5d09bd437..ec9046a0b 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -40,8 +40,7 @@ export const InstantiateInfo = () => { Instantiate Info - {/* TODO - Implement network */} - phoenix-1 + {contractDetail.chainId} {contractDetail.instantiateInfo && ( { /> - {/* TODO - Implement code description */} { )} - {/* TODO - Implement proposal name */} {contractDetail.initProposalId && ( - + Date: Mon, 26 Dec 2022 17:02:06 +0700 Subject: [PATCH 04/11] chore: remove comment --- .../pages/contract-details/components/InstantiateInfo.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index ec9046a0b..ce8234edb 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -10,12 +10,6 @@ import { addressType, date, dateFromNow, getFirstQueryParam } from "lib/utils"; import { LabelText } from "./LabelText"; export const InstantiateInfo = () => { - /** - * @todos - * - Make an interface - * - All these are mockups, Wireup with real data and map render LabelText - */ - const contractAddress = getFirstQueryParam(router.query.contractAddress); const { currentChainName } = useWallet(); const contractDetail = useContractDetail(contractAddress as ContractAddr); From 3c53e54a98b9873fe9ec9d7bc536a0189897b62a Mon Sep 17 00:00:00 2001 From: bkioshn Date: Tue, 27 Dec 2022 10:49:59 +0700 Subject: [PATCH 05/11] fix: render wallet and render contract address --- .../contract-details/components/InstantiateInfo.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index ce8234edb..cc4feaa72 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -16,8 +16,8 @@ export const InstantiateInfo = () => { if (!contractDetail || !contractDetail.instantiateInfo) return null; - const renderAddressType = () => { - switch (addressType(contractAddress, currentChainName)) { + const renderAddressType = (address: string) => { + switch (addressType(address, currentChainName)) { case "contract_address": return "(Contract Address)"; case "user_address": @@ -52,7 +52,12 @@ export const InstantiateInfo = () => { )} - + Date: Tue, 27 Dec 2022 15:43:48 +0700 Subject: [PATCH 06/11] chore: add changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1a8e8d43..42b2ee084 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,7 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Features - +- [#46](https://github.com/alleslabs/celatone-frontend/pull/46) Wireup instantiate info - [#39](https://github.com/alleslabs/celatone-frontend/pull/39) Render "Me" instead of user address - [#43](https://github.com/alleslabs/celatone-frontend/pull/43) Add code details page ui skeleton - [#37](https://github.com/alleslabs/celatone-frontend/pull/37) Add contract details data loader From 21e4ee7dc8e5812cfdc787904a0c7a110e30810d Mon Sep 17 00:00:00 2001 From: bkioshn Date: Wed, 28 Dec 2022 15:12:43 +0700 Subject: [PATCH 07/11] fix: pass data from index, make addressType as hook --- src/lib/hooks/index.ts | 1 + src/lib/hooks/useAddressType.ts | 22 +++ src/lib/model/contract.ts | 2 +- .../components/InstantiateInfo.tsx | 178 +++++++++--------- src/lib/pages/contract-details/index.tsx | 8 +- src/lib/utils/addressType.ts | 13 -- src/lib/utils/index.ts | 1 - 7 files changed, 122 insertions(+), 103 deletions(-) create mode 100644 src/lib/hooks/useAddressType.ts delete mode 100644 src/lib/utils/addressType.ts diff --git a/src/lib/hooks/index.ts b/src/lib/hooks/index.ts index bc955d10c..5df74f1b9 100644 --- a/src/lib/hooks/index.ts +++ b/src/lib/hooks/index.ts @@ -4,3 +4,4 @@ export * from "./useToast"; export * from "./useEndpoint"; export * from "./useUserKey"; export * from "./useDummyWallet"; +export * from "./useAddressType"; diff --git a/src/lib/hooks/useAddressType.ts b/src/lib/hooks/useAddressType.ts new file mode 100644 index 000000000..738798ffc --- /dev/null +++ b/src/lib/hooks/useAddressType.ts @@ -0,0 +1,22 @@ +import { useWallet } from "@cosmos-kit/react"; +import { useCallback } from "react"; + +export const useAddressType = (address: string) => { + const { currentChainName } = useWallet(); + return useCallback(() => { + if ( + currentChainName === "osmosis" || + currentChainName === "osmosistestnet" + ) { + switch (address.length) { + case 43: + return "user_address"; + case 63: + return "contract_address"; + default: + break; + } + } + return undefined; + }, [address.length, currentChainName]); +}; diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index a270c1522..3515ac4bc 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -25,7 +25,7 @@ import type { ContractInfo, ContractListInfo } from "lib/stores/contract"; import type { ContractAddr, HumanAddr } from "lib/types"; import { formatSlugName } from "lib/utils"; -interface ContractDetail { +export interface ContractDetail { chainId: string; codeInfo: CodeLocalInfo | undefined; contractInfo: ContractInfo | undefined; diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index 3d0e13559..c0656f671 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -1,22 +1,21 @@ -import { Flex, Heading } from "@chakra-ui/react"; -import { useWallet } from "@cosmos-kit/react"; +import { Flex, Heading, Text } from "@chakra-ui/react"; import router from "next/router"; import { ExplorerLink } from "lib/components/ExplorerLink"; import { LabelText } from "lib/components/LabelText"; -import { useContractDetail } from "lib/model/contract"; -import type { ContractAddr } from "lib/types"; -import { addressType, date, dateFromNow, getFirstQueryParam } from "lib/utils"; +import { useAddressType } from "lib/hooks"; +import type { ContractDetail } from "lib/model/contract"; +import { date, dateFromNow, getFirstQueryParam } from "lib/utils"; -export const InstantiateInfo = () => { +interface InstantiateInfoProps { + contractDetail: ContractDetail; +} +export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { const contractAddress = getFirstQueryParam(router.query.contractAddress); - const { currentChainName } = useWallet(); - const contractDetail = useContractDetail(contractAddress as ContractAddr); + const addressType = useAddressType(contractAddress); - if (!contractDetail || !contractDetail.instantiateInfo) return null; - - const renderAddressType = (address: string) => { - switch (addressType(address, currentChainName)) { + const renderAddressType = () => { + switch (addressType()) { case "contract_address": return "(Contract Address)"; case "user_address": @@ -27,89 +26,94 @@ export const InstantiateInfo = () => { return ""; }; - return ( - - - Instantiate Info - + const renderDataFound = () => { + if (contractDetail?.instantiateInfo) { + return ( + <> + {contractDetail.chainId} - {contractDetail.chainId} + {contractDetail.instantiateInfo && ( + + + + )} - {contractDetail.instantiateInfo && ( - - - - )} + + + - - - + + + - - - + {contractDetail.initTxHash && !contractDetail.initProposalId && ( + + + + )} - {contractDetail.initTxHash && ( - - - - )} + {contractDetail.initProposalId && !contractDetail.initTxHash && ( + + + + )} - {contractDetail.initProposalId && ( - - - - )} + {contractDetail.instantiateInfo.admin && ( + + + + )} - {contractDetail.instantiateInfo?.admin && ( - - - - )} + {contractDetail.instantiateInfo.ibcPortId && ( + + {contractDetail.instantiateInfo.ibcPortId} + + )} + + ); + } + return Error fetching data; + }; - {contractDetail.instantiateInfo?.ibcPortId && ( - - {contractDetail.instantiateInfo?.ibcPortId} - - )} + return ( + + + Instantiate Info + + {renderDataFound()} ); }; diff --git a/src/lib/pages/contract-details/index.tsx b/src/lib/pages/contract-details/index.tsx index 7b03d3c3f..93fdd8fdc 100644 --- a/src/lib/pages/contract-details/index.tsx +++ b/src/lib/pages/contract-details/index.tsx @@ -17,6 +17,8 @@ import { BackButton } from "lib/components/button/BackButton"; import { CustomTab } from "lib/components/CustomTab"; import { ExplorerLink } from "lib/components/ExplorerLink"; import PageContainer from "lib/components/PageContainer"; +import { useContractDetail } from "lib/model/contract"; +import type { ContractAddr } from "lib/types"; import { getFirstQueryParam } from "lib/utils"; import { CommandSection } from "./components/CommandSection"; @@ -30,6 +32,10 @@ const ContractDetails = () => { * @todos add contract address validation function here */ const contractAddress = getFirstQueryParam(router.query.contractAddress); + const contractDetail = useContractDetail(contractAddress as ContractAddr); + + // TODO - Wait for design + if (!contractDetail) return null; return ( @@ -103,7 +109,7 @@ const ContractDetails = () => { {/* Instantiate/Contract Info Section */} {/* Instantiate Info */} - + {/* Contract Info (Expand) */} diff --git a/src/lib/utils/addressType.ts b/src/lib/utils/addressType.ts deleted file mode 100644 index f800dfd40..000000000 --- a/src/lib/utils/addressType.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const addressType = (address: string, chainName: string) => { - if (chainName === "osmosis" || chainName === "osmosistestnet") { - switch (address.length) { - case 43: - return "user_address"; - case 63: - return "contract_address"; - default: - break; - } - } - return undefined; -}; diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 560b6f49d..426511042 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -11,4 +11,3 @@ export * from "./extractMsgType"; export * from "./redo"; export * from "./scrollTop"; export * from "./date"; -export * from "./addressType"; From 0a30b7cbc4711188e8f2345227867b872505e921 Mon Sep 17 00:00:00 2001 From: poomthiti Date: Thu, 29 Dec 2022 12:25:56 +0700 Subject: [PATCH 08/11] fix: as commented --- src/lib/hooks/useAddressType.ts | 4 +-- .../components/InstantiateInfo.tsx | 28 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/lib/hooks/useAddressType.ts b/src/lib/hooks/useAddressType.ts index 738798ffc..9e20f580c 100644 --- a/src/lib/hooks/useAddressType.ts +++ b/src/lib/hooks/useAddressType.ts @@ -1,9 +1,9 @@ import { useWallet } from "@cosmos-kit/react"; -import { useCallback } from "react"; +import { useMemo } from "react"; export const useAddressType = (address: string) => { const { currentChainName } = useWallet(); - return useCallback(() => { + return useMemo(() => { if ( currentChainName === "osmosis" || currentChainName === "osmosistestnet" diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index c0656f671..981e49cb1 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -15,7 +15,7 @@ export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { const addressType = useAddressType(contractAddress); const renderAddressType = () => { - switch (addressType()) { + switch (addressType) { case "contract_address": return "(Contract Address)"; case "user_address": @@ -66,17 +66,7 @@ export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { /> - {contractDetail.initTxHash && !contractDetail.initProposalId && ( - - - - )} - - {contractDetail.initProposalId && !contractDetail.initTxHash && ( + {contractDetail.initProposalId ? ( { canCopyWithHover /> + ) : ( + + + )} {contractDetail.instantiateInfo.admin && ( @@ -105,7 +103,11 @@ export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { ); } - return Error fetching data; + return ( + + Error fetching data + + ); }; return ( From ecfdc7c6b448dea48a32a41e3742d065c0542020 Mon Sep 17 00:00:00 2001 From: poomthiti Date: Thu, 29 Dec 2022 12:35:52 +0700 Subject: [PATCH 09/11] refactor: show N/A in case of no block height --- .../components/InstantiateInfo.tsx | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index 981e49cb1..c2eefea67 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -32,21 +32,24 @@ export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { <> {contractDetail.chainId} - {contractDetail.instantiateInfo && ( - - - - )} + {contractDetail.instantiateInfo && + (contractDetail.instantiateInfo.createdHeight ? ( + + + + ) : ( + N/A + ))} Date: Thu, 29 Dec 2022 17:12:47 +0700 Subject: [PATCH 10/11] fix: as commented and refactor use address type --- src/lib/components/LabelText.tsx | 19 ++++-- src/lib/hooks/useAddressType.ts | 46 +++++++++------ src/lib/model/contract.ts | 6 +- .../components/InstantiateInfo.tsx | 58 +++++++++++-------- src/lib/services/contract.ts | 2 +- src/lib/utils/date.ts | 2 +- 6 files changed, 82 insertions(+), 51 deletions(-) diff --git a/src/lib/components/LabelText.tsx b/src/lib/components/LabelText.tsx index d67f2c0fc..406744921 100644 --- a/src/lib/components/LabelText.tsx +++ b/src/lib/components/LabelText.tsx @@ -3,10 +3,16 @@ import { Flex, Text } from "@chakra-ui/react"; interface LabelTextProps { label: string; children: string | JSX.Element; - helperText?: string; + helperText1?: string; + helperText2?: string; } -export const LabelText = ({ label, children, helperText }: LabelTextProps) => { +export const LabelText = ({ + label, + children, + helperText1, + helperText2, +}: LabelTextProps) => { return ( @@ -17,9 +23,14 @@ export const LabelText = ({ label, children, helperText }: LabelTextProps) => { ) : ( children )} - {helperText && ( + {helperText1 && ( - {helperText} + {helperText1} + + )} + {helperText2 && ( + + {helperText2} )} diff --git a/src/lib/hooks/useAddressType.ts b/src/lib/hooks/useAddressType.ts index 9e20f580c..b46c18a6e 100644 --- a/src/lib/hooks/useAddressType.ts +++ b/src/lib/hooks/useAddressType.ts @@ -1,22 +1,34 @@ import { useWallet } from "@cosmos-kit/react"; -import { useMemo } from "react"; +import { useCallback } from "react"; -export const useAddressType = (address: string) => { +export type AddressReturnType = + | "user_address" + | "contract_address" + | "invalid_address"; + +const addressLengthMap: { + [key: string]: { [length: number]: AddressReturnType }; +} = { + osmosis: { + 43: "user_address", + 63: "contract_address", + }, + osmosistestnet: { + 43: "user_address", + 63: "contract_address", + }, +}; + +export const useGetAddressType = () => { const { currentChainName } = useWallet(); - return useMemo(() => { - if ( - currentChainName === "osmosis" || - currentChainName === "osmosistestnet" - ) { - switch (address.length) { - case 43: - return "user_address"; - case 63: - return "contract_address"; - default: - break; + return useCallback( + (address: string): AddressReturnType => { + const chainAddressMap = addressLengthMap[currentChainName]; + if (address.length in chainAddressMap) { + return chainAddressMap[address.length]; } - } - return undefined; - }, [address.length, currentChainName]); + return "invalid_address"; + }, + [currentChainName] + ); }; diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index 3515ac4bc..c5aac4512 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -33,9 +33,9 @@ export interface ContractDetail { publicInfo: PublicInfo | undefined; balances: Coin[]; initMsg: string; - initTxHash?: string; - initProposalTitle?: string; - initProposalId?: number; + initTxHash: string | undefined; + initProposalTitle: string | undefined; + initProposalId: number | undefined; } export const useInstantiatedByMe = (enable: boolean): ContractListInfo => { diff --git a/src/lib/pages/contract-details/components/InstantiateInfo.tsx b/src/lib/pages/contract-details/components/InstantiateInfo.tsx index c2eefea67..de7c5f46a 100644 --- a/src/lib/pages/contract-details/components/InstantiateInfo.tsx +++ b/src/lib/pages/contract-details/components/InstantiateInfo.tsx @@ -1,46 +1,49 @@ import { Flex, Heading, Text } from "@chakra-ui/react"; -import router from "next/router"; import { ExplorerLink } from "lib/components/ExplorerLink"; import { LabelText } from "lib/components/LabelText"; -import { useAddressType } from "lib/hooks"; +import type { AddressReturnType } from "lib/hooks"; +import { useGetAddressType } from "lib/hooks"; import type { ContractDetail } from "lib/model/contract"; -import { date, dateFromNow, getFirstQueryParam } from "lib/utils"; +import { formatUTC, dateFromNow } from "lib/utils"; + +const getAddressTypeText = (addressType: AddressReturnType) => { + switch (addressType) { + case "contract_address": + return "(Contract Address)"; + case "user_address": + return "(Wallet Address)"; + default: + return "(Invalid Address)"; + } +}; interface InstantiateInfoProps { contractDetail: ContractDetail; } -export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { - const contractAddress = getFirstQueryParam(router.query.contractAddress); - const addressType = useAddressType(contractAddress); - const renderAddressType = () => { - switch (addressType) { - case "contract_address": - return "(Contract Address)"; - case "user_address": - return "(Wallet Address)"; - default: - break; - } - return ""; - }; +export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { + const getAddressType = useGetAddressType(); const renderDataFound = () => { if (contractDetail?.instantiateInfo) { + const instantiatorType = getAddressType( + contractDetail.instantiateInfo.instantiator + ); return ( <> {contractDetail.chainId} {contractDetail.instantiateInfo && - (contractDetail.instantiateInfo.createdHeight ? ( + (contractDetail.instantiateInfo.createdHeight !== -1 ? ( { N/A ))} - + { { {contractDetail.initProposalId ? ( { )} @@ -106,6 +113,7 @@ export const InstantiateInfo = ({ contractDetail }: InstantiateInfoProps) => { ); } + return ( Error fetching data diff --git a/src/lib/services/contract.ts b/src/lib/services/contract.ts index 2424fff7f..e58235619 100644 --- a/src/lib/services/contract.ts +++ b/src/lib/services/contract.ts @@ -97,7 +97,7 @@ export const queryInstantiateInfo = async ( createdTime = new Date(data.block.header.time); } else { // TODO: revisit default value - createdHeight = 0; + createdHeight = -1; createdTime = new Date(0); } diff --git a/src/lib/utils/date.ts b/src/lib/utils/date.ts index f88195dd4..0abd624fd 100644 --- a/src/lib/utils/date.ts +++ b/src/lib/utils/date.ts @@ -1,6 +1,6 @@ import dayjs from "dayjs"; -export const date = (timestamp: string) => { +export const formatUTC = (timestamp: string) => { const localDate = timestamp.concat("Z"); return dayjs(localDate).utc().format("MMM DD, YYYY, h:mm:ss A [(UTC)]"); }; From 3b2b5d93e9b3987ad3ae575d24ba9f2c521f6c9d Mon Sep 17 00:00:00 2001 From: poomthiti Date: Thu, 29 Dec 2022 17:22:31 +0700 Subject: [PATCH 11/11] refactor: useGetAddressType --- src/lib/hooks/useAddressType.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/lib/hooks/useAddressType.ts b/src/lib/hooks/useAddressType.ts index b46c18a6e..a05bb85f5 100644 --- a/src/lib/hooks/useAddressType.ts +++ b/src/lib/hooks/useAddressType.ts @@ -24,10 +24,7 @@ export const useGetAddressType = () => { return useCallback( (address: string): AddressReturnType => { const chainAddressMap = addressLengthMap[currentChainName]; - if (address.length in chainAddressMap) { - return chainAddressMap[address.length]; - } - return "invalid_address"; + return chainAddressMap[address.length] ?? "invalid_address"; }, [currentChainName] );