From 7dc20945bd9715707907a4aa47d46bb6e5bedf6b Mon Sep 17 00:00:00 2001 From: Jennie Alles Date: Wed, 31 Jan 2024 17:22:36 +0700 Subject: [PATCH 1/4] feat(components): add proposal messages --- CHANGELOG.md | 1 + .../contract-details/components/JsonInfo.tsx | 2 +- .../components/ProposalOverview.tsx | 25 +++++++++++++------ src/lib/services/proposal.ts | 8 +++++- src/lib/types/proposal.ts | 7 +++++- 5 files changed, 32 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22d747baa..e79f3383b 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 +- [#760](https://github.com/alleslabs/celatone-frontend/pull/760) Add proposal messages - [#759](https://github.com/alleslabs/celatone-frontend/pull/759) Add proposal description and metadata - [#745](https://github.com/alleslabs/celatone-frontend/pull/745) Add proposal top - [#757](https://github.com/alleslabs/celatone-frontend/pull/757) api v1 - proposal data diff --git a/src/lib/pages/contract-details/components/JsonInfo.tsx b/src/lib/pages/contract-details/components/JsonInfo.tsx index f0cd2d87a..62947783b 100644 --- a/src/lib/pages/contract-details/components/JsonInfo.tsx +++ b/src/lib/pages/contract-details/components/JsonInfo.tsx @@ -30,7 +30,7 @@ export const JsonInfo = ({ cursor="pointer" onClick={() => setExpand((prev) => !prev)} > - + {header} { return ( @@ -119,14 +121,21 @@ export const ProposalOverview = ({ proposalData }: ProposalOverviewProps) => { Proposal Messages - - Proposal message content - + {proposalData.messages?.length ? ( + <> + {proposalData.messages.map((item) => ( + + ))} + + ) : ( + + No Messages + + )} diff --git a/src/lib/services/proposal.ts b/src/lib/services/proposal.ts index 37591c0f3..7ce34ce26 100644 --- a/src/lib/services/proposal.ts +++ b/src/lib/services/proposal.ts @@ -168,7 +168,13 @@ const zProposalDataResponse = z.object({ created_timestamp: zUtcDate.nullable(), created_tx_hash: z.string().nullable(), description: z.string(), - messages: z.unknown().array().nullable(), + messages: z + .object({ + "@type": z.string(), + }) + .passthrough() + .array() + .nullable(), metadata: z.string(), proposal_deposits: z .object({ diff --git a/src/lib/types/proposal.ts b/src/lib/types/proposal.ts index 54a0076bc..69f9562ee 100644 --- a/src/lib/types/proposal.ts +++ b/src/lib/types/proposal.ts @@ -76,12 +76,17 @@ export interface ProposalDeposit { txHash: string; } +interface Message { + "@type": string; + [key: string]: unknown; +} + export interface ProposalData extends Proposal { createdHeight: Nullable; createdTimestamp: Nullable; createdTxHash: Nullable; description: string; - messages: Nullable; + messages: Nullable; metadata: string; proposalDeposits: ProposalDeposit[]; resolvedTimestamp: Nullable; From 8f250d64ef65c4beccd4da85c0e5067f8be1029a Mon Sep 17 00:00:00 2001 From: Jennie Alles Date: Wed, 31 Jan 2024 18:10:52 +0700 Subject: [PATCH 2/4] fix(components): add item index in msg array --- .../pages/proposal-details/components/ProposalOverview.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/pages/proposal-details/components/ProposalOverview.tsx b/src/lib/pages/proposal-details/components/ProposalOverview.tsx index 32aa5555a..8f7b0c170 100644 --- a/src/lib/pages/proposal-details/components/ProposalOverview.tsx +++ b/src/lib/pages/proposal-details/components/ProposalOverview.tsx @@ -123,11 +123,12 @@ export const ProposalOverview = ({ proposalData }: ProposalOverviewProps) => { {proposalData.messages?.length ? ( <> - {proposalData.messages.map((item) => ( + {proposalData.messages.map((item, i) => ( ))} From ab2ae237d3d109dcd7f8eb25920a9a9e7d8d2dcf Mon Sep 17 00:00:00 2001 From: Jennie Alles Date: Mon, 5 Feb 2024 15:44:00 +0700 Subject: [PATCH 3/4] fix(components): add to do --- src/lib/types/proposal.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/types/proposal.ts b/src/lib/types/proposal.ts index c70027da5..a602331cc 100644 --- a/src/lib/types/proposal.ts +++ b/src/lib/types/proposal.ts @@ -95,6 +95,7 @@ export interface ProposalDeposit { txHash: string; } +// TODO: combine with MsgBody in services/tx.ts interface Message { "@type": string; [key: string]: unknown; From 14bc0cba7810286c563e3c9dc9396f36454ecea3 Mon Sep 17 00:00:00 2001 From: Jennie Alles Date: Mon, 5 Feb 2024 15:49:53 +0700 Subject: [PATCH 4/4] fix(components): move json info component --- .../components => components/json}/JsonInfo.tsx | 5 +++-- src/lib/pages/contract-details/index.tsx | 2 +- .../pages/proposal-details/components/ProposalOverview.tsx | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) rename src/lib/{pages/contract-details/components => components/json}/JsonInfo.tsx (91%) diff --git a/src/lib/pages/contract-details/components/JsonInfo.tsx b/src/lib/components/json/JsonInfo.tsx similarity index 91% rename from src/lib/pages/contract-details/components/JsonInfo.tsx rename to src/lib/components/json/JsonInfo.tsx index 62947783b..7106a8c16 100644 --- a/src/lib/pages/contract-details/components/JsonInfo.tsx +++ b/src/lib/components/json/JsonInfo.tsx @@ -1,8 +1,9 @@ import { Flex, Heading } from "@chakra-ui/react"; import { useState } from "react"; -import { CustomIcon } from "lib/components/icon"; -import JsonReadOnly from "lib/components/json/JsonReadOnly"; +import { CustomIcon } from "../icon"; + +import JsonReadOnly from "./JsonReadOnly"; interface JsonInfoProps { header: string; diff --git a/src/lib/pages/contract-details/index.tsx b/src/lib/pages/contract-details/index.tsx index cf5a7e1ab..c264563a1 100644 --- a/src/lib/pages/contract-details/index.tsx +++ b/src/lib/pages/contract-details/index.tsx @@ -22,6 +22,7 @@ import { AssetsSection } from "lib/components/asset"; import { CustomTab } from "lib/components/CustomTab"; import { DelegationsSection } from "lib/components/delegations"; import { CustomIcon } from "lib/components/icon"; +import { JsonInfo } from "lib/components/json/JsonInfo"; import { Loading } from "lib/components/Loading"; import PageContainer from "lib/components/PageContainer"; import { ErrorFetching, InvalidState } from "lib/components/state"; @@ -34,7 +35,6 @@ import { ContractDesc } from "./components/contract-description"; import { ContractStates } from "./components/contract-states"; import { ContractTop } from "./components/ContractTop"; import { InstantiateInfo } from "./components/InstantiateInfo"; -import { JsonInfo } from "./components/JsonInfo"; import { ContractTables } from "./components/tables"; import { useContractData } from "./data"; import { TabIndex, zContractDetailsQueryParams } from "./types"; diff --git a/src/lib/pages/proposal-details/components/ProposalOverview.tsx b/src/lib/pages/proposal-details/components/ProposalOverview.tsx index bd133bd98..dd82a065b 100644 --- a/src/lib/pages/proposal-details/components/ProposalOverview.tsx +++ b/src/lib/pages/proposal-details/components/ProposalOverview.tsx @@ -1,7 +1,7 @@ import { Flex, Grid, GridItem, Heading, Text, Box } from "@chakra-ui/react"; +import { JsonInfo } from "lib/components/json/JsonInfo"; import { Markdown } from "lib/components/Markdown"; -import { JsonInfo } from "lib/pages/contract-details/components/JsonInfo"; import type { ProposalData } from "lib/types"; import { isUrl, jsonPrettify } from "lib/utils";