From fca229e62ad92549f6583bb2a00b40e310adf942 Mon Sep 17 00:00:00 2001 From: Dexter Edwards Date: Thu, 18 May 2023 22:43:32 +0100 Subject: [PATCH] feat(governance): use rest to expose proposal data (#3827) --- apps/governance-e2e/.env | 1 + apps/governance/.env | 1 + apps/governance/.env.capsule | 1 + apps/governance/.env.devnet | 1 + apps/governance/.env.mainnet | 1 + apps/governance/.env.stagnet1 | 1 + apps/governance/.env.testnet | 1 + apps/governance/.env.validator-testnet | 1 + apps/governance/src/config/env.ts | 1 + .../proposals/components/proposal/proposal.spec.tsx | 12 +++++++++--- .../proposals/components/proposal/proposal.tsx | 6 ++++-- .../routes/proposals/proposal/proposal-container.tsx | 8 +++++++- .../syntax-highlighter/syntax-highlighter.tsx | 10 +++++++++- 13 files changed, 38 insertions(+), 7 deletions(-) diff --git a/apps/governance-e2e/.env b/apps/governance-e2e/.env index d662e8fe7..51b30c340 100644 --- a/apps/governance-e2e/.env +++ b/apps/governance-e2e/.env @@ -17,6 +17,7 @@ NX_TRANCHES_SERVICE_URL=https://tranches-stagnet1-k8s.ops.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/test/announcements.json NX_GITHUB_FEEDBACK_URL=https://github.com/vegaprotocol/feedback/discussions NX_WALLETCONNECT_PROJECT_ID=fe8091dc35738863e509fc4947525c72 +NX_VEGA_REST_URL=http://localhost:3008/api/v2/ #Test configuration variables CYPRESS_FAIRGROUND=false diff --git a/apps/governance/.env b/apps/governance/.env index 3a07ae028..3a76bd044 100644 --- a/apps/governance/.env +++ b/apps/governance/.env @@ -15,6 +15,7 @@ NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-stagnet1-k8s.ops.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/main/announcements.json NX_WALLETCONNECT_PROJECT_ID=fe8091dc35738863e509fc4947525c72 +NX_VEGA_REST_URL=https://api.n00.stagnet1.vega.xyz/api/v2/ #Test configuration variables CYPRESS_FAIRGROUND=false diff --git a/apps/governance/.env.capsule b/apps/governance/.env.capsule index 0bd649760..e3769ac14 100644 --- a/apps/governance/.env.capsule +++ b/apps/governance/.env.capsule @@ -17,6 +17,7 @@ NX_VEGA_WALLET_URL=http://localhost:1789 NX_VEGA_DOCS_URL=https://docs.vega.xyz/testnet NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-stagnet1-k8s.ops.vega.xyz +NX_VEGA_REST_URL=http://localhost:3008/api/v2/ #Test configuration variables CYPRESS_FAIRGROUND=false diff --git a/apps/governance/.env.devnet b/apps/governance/.env.devnet index c9d57d440..fd7de4b65 100644 --- a/apps/governance/.env.devnet +++ b/apps/governance/.env.devnet @@ -11,3 +11,4 @@ NX_VEGA_DOCS_URL=https://docs.vega.xyz/testnet NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-devnet1-k8s.ops.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/fairground/announcements.json +NX_VEGA_REST_URL=https://api.n00.devnet1.vega.xyz/api/v2/ diff --git a/apps/governance/.env.mainnet b/apps/governance/.env.mainnet index 561ad3fd9..2b3c784e5 100644 --- a/apps/governance/.env.mainnet +++ b/apps/governance/.env.mainnet @@ -12,3 +12,4 @@ NX_SENTRY_DSN=https://4b8c8a8ba07742648aa4dfe1b8d17e40:87edc2605e544f888305d7fc4 NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-mainnet-k8s.ops.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/mainnet/announcements.json +NX_VEGA_REST_URL=https://api.vega.community/api/v2/ diff --git a/apps/governance/.env.stagnet1 b/apps/governance/.env.stagnet1 index 2551d5b40..7f9f49835 100644 --- a/apps/governance/.env.stagnet1 +++ b/apps/governance/.env.stagnet1 @@ -8,3 +8,4 @@ NX_VEGA_DOCS_URL=https://docs.vega.xyz/testnet NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-stagnet1-k8s.ops.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/fairground/announcements.json +NX_VEGA_REST_URL=https://api.n00.stagnet1.vega.xyz/api/v2/ diff --git a/apps/governance/.env.testnet b/apps/governance/.env.testnet index 66d3eaf2e..8fa9bb53d 100644 --- a/apps/governance/.env.testnet +++ b/apps/governance/.env.testnet @@ -12,3 +12,4 @@ NX_HOSTED_WALLET_URL=https://wallet.testnet.vega.xyz NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-testnet-k8s.ops.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/fairground/announcements.json +NX_VEGA_REST_URL=https://api.n07.testnet.vega.xyz/api/v2/ \ No newline at end of file diff --git a/apps/governance/.env.validator-testnet b/apps/governance/.env.validator-testnet index aa16cd4e9..7e3343d46 100644 --- a/apps/governance/.env.validator-testnet +++ b/apps/governance/.env.validator-testnet @@ -9,3 +9,4 @@ NX_ETHERSCAN_URL=https://sepolia.etherscan.io NX_GITHUB_FEEDBACK_URL=https://github.com/vegaprotocol/feedback/discussions NX_VEGA_EXPLORER_URL=https://dev.explorer.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/fairground/announcements.json +NX_VEGA_REST_URL=https://api-validators-testnet.vega.rocks/api/v2/ \ No newline at end of file diff --git a/apps/governance/src/config/env.ts b/apps/governance/src/config/env.ts index 991c3e1dc..932163e0d 100644 --- a/apps/governance/src/config/env.ts +++ b/apps/governance/src/config/env.ts @@ -62,6 +62,7 @@ export const ENV = { ethWalletMnemonic: windowOrDefault('NX_ETH_WALLET_MNEMONIC'), localProviderUrl: windowOrDefault('NX_LOCAL_PROVIDER_URL'), delegationsPagination: windowOrDefault('NX_DELEGATIONS_PAGINATION'), + rest: windowOrDefault('NX_VEGA_REST_URL'), flags: { NETWORK_DOWN: TRUTHY.includes(windowOrDefault('NX_NETWORK_DOWN')), MOCK: TRUTHY.includes(windowOrDefault('NX_MOCKED')), diff --git a/apps/governance/src/routes/proposals/components/proposal/proposal.spec.tsx b/apps/governance/src/routes/proposals/components/proposal/proposal.spec.tsx index 6e8122358..61e709d77 100644 --- a/apps/governance/src/routes/proposals/components/proposal/proposal.spec.tsx +++ b/apps/governance/src/routes/proposals/components/proposal/proposal.spec.tsx @@ -43,13 +43,17 @@ jest.mock('../list-asset', () => ({ it('Renders with data-testid', async () => { const proposal = generateProposal(); - render(); + render( + + ); expect(await screen.findByTestId('proposal')).toBeInTheDocument(); }); it('renders each section', async () => { const proposal = generateProposal(); - render(); + render( + + ); expect(await screen.findByTestId('proposal-header')).toBeInTheDocument(); expect(screen.getByTestId('proposal-change-table')).toBeInTheDocument(); expect(screen.getByTestId('proposal-json')).toBeInTheDocument(); @@ -76,6 +80,8 @@ it('renders whitelist section if proposal is new asset and source is erc20', asy }, }, }); - render(); + render( + + ); expect(screen.getByTestId('proposal-list-asset')).toBeInTheDocument(); }); diff --git a/apps/governance/src/routes/proposals/components/proposal/proposal.tsx b/apps/governance/src/routes/proposals/components/proposal/proposal.tsx index d2fa9c947..f9b918b3d 100644 --- a/apps/governance/src/routes/proposals/components/proposal/proposal.tsx +++ b/apps/governance/src/routes/proposals/components/proposal/proposal.tsx @@ -24,9 +24,11 @@ export enum ProposalType { } export interface ProposalProps { proposal: ProposalFieldsFragment | ProposalQuery['proposal']; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + restData: any; } -export const Proposal = ({ proposal }: ProposalProps) => { +export const Proposal = ({ proposal, restData }: ProposalProps) => { const { params, loading, error } = useNetworkParams([ NetworkParams.governance_proposal_market_minVoterBalance, NetworkParams.governance_proposal_updateMarket_minVoterBalance, @@ -104,7 +106,7 @@ export const Proposal = ({ proposal }: ProposalProps) => {
- +
diff --git a/apps/governance/src/routes/proposals/proposal/proposal-container.tsx b/apps/governance/src/routes/proposals/proposal/proposal-container.tsx index 09ce8521f..f47f3d681 100644 --- a/apps/governance/src/routes/proposals/proposal/proposal-container.tsx +++ b/apps/governance/src/routes/proposals/proposal/proposal-container.tsx @@ -5,9 +5,15 @@ import { useParams } from 'react-router-dom'; import { Proposal } from '../components/proposal'; import { ProposalNotFound } from '../components/proposal-not-found'; import { useProposalQuery } from './__generated__/Proposal'; +import { useFetch } from '@vegaprotocol/react-helpers'; +import { ENV } from '../../../config'; export const ProposalContainer = () => { const params = useParams<{ proposalId: string }>(); + const { + state: { loading: restLoading, error: restError, data: restData }, + } = useFetch(`${ENV.rest}governance?proposalId=${params.proposalId}`); + console.log(restLoading, restError, restData); const { data, loading, error, refetch } = useProposalQuery({ fetchPolicy: 'network-only', errorPolicy: 'ignore', @@ -23,7 +29,7 @@ export const ProposalContainer = () => { return ( {data?.proposal ? ( - + ) : ( )} diff --git a/libs/ui-toolkit/src/components/syntax-highlighter/syntax-highlighter.tsx b/libs/ui-toolkit/src/components/syntax-highlighter/syntax-highlighter.tsx index 240e3feee..ed7652de9 100644 --- a/libs/ui-toolkit/src/components/syntax-highlighter/syntax-highlighter.tsx +++ b/libs/ui-toolkit/src/components/syntax-highlighter/syntax-highlighter.tsx @@ -1,4 +1,5 @@ import classNames from 'classnames'; +import { useMemo } from 'react'; import Highlighter from 'react-syntax-highlighter'; export const SyntaxHighlighter = ({ @@ -8,6 +9,13 @@ export const SyntaxHighlighter = ({ data: unknown; size?: 'smaller' | 'default'; }) => { + const parsedData = useMemo(() => { + try { + return JSON.stringify(data, null, ' '); + } catch (e) { + return 'Unable to parse data'; + } + }, [data]); return (
- {JSON.stringify(data, null, ' ')} + {parsedData}
);