From 5f177785b6d3df97f1b5f8afe64b3bf89ef3a96d Mon Sep 17 00:00:00 2001 From: Art Date: Thu, 20 Jul 2023 10:27:43 +0200 Subject: [PATCH] feat(governance): protocol upgrade notification, est. time (#4289) --- .../src/app/routes/blocks/id/block.tsx | 9 +- apps/governance/.env | 4 + apps/governance/.env.capsule | 3 + apps/governance/.env.devnet | 3 + apps/governance/.env.mainnet | 3 + apps/governance/.env.mainnet-mirror | 3 + apps/governance/.env.stagnet1 | 3 + apps/governance/.env.testnet | 3 + apps/governance/.env.validators-testnet | 3 + apps/governance/src/components/nav/nav.tsx | 13 +- .../components/page-templates/app-layout.tsx | 21 +- .../page-templates/template-sidebar.tsx | 32 +- .../governance/src/i18n/translations/dev.json | 4 +- ...ocol-upgrade-proposal-detail-info.spec.tsx | 44 ++- .../protocol-upgrade-proposal-detail-info.tsx | 33 +- .../protocol-upgrade-proposal-container.tsx | 40 +- .../protocol-upgrade-proposal.tsx | 6 +- libs/environment/src/hooks/use-environment.ts | 8 + .../src/utils/validate-environment.ts | 2 + ...protocol-upgrade-proposal-notification.tsx | 5 +- libs/react-helpers/src/hooks/use-fetch.ts | 2 +- libs/tendermint/.babelrc | 12 + libs/tendermint/.eslintrc.json | 18 + libs/tendermint/README.md | 7 + libs/tendermint/jest.config.ts | 11 + libs/tendermint/package.json | 4 + libs/tendermint/project.json | 50 +++ libs/tendermint/src/index.ts | 2 + libs/tendermint/src/lib/use-block-info.ts | 20 + libs/tendermint/src/types.ts | 57 +++ libs/tendermint/tsconfig.json | 25 ++ libs/tendermint/tsconfig.lib.json | 23 ++ libs/tendermint/tsconfig.spec.json | 20 + .../notification-banner.tsx | 10 +- .../src/components/viewing-as-user/index.tsx | 26 +- nx.json | 3 +- package.json | 8 +- tsconfig.base.json | 1 + yarn.lock | 374 +++++++++--------- 39 files changed, 678 insertions(+), 237 deletions(-) create mode 100644 libs/tendermint/.babelrc create mode 100644 libs/tendermint/.eslintrc.json create mode 100644 libs/tendermint/README.md create mode 100644 libs/tendermint/jest.config.ts create mode 100644 libs/tendermint/package.json create mode 100644 libs/tendermint/project.json create mode 100644 libs/tendermint/src/index.ts create mode 100644 libs/tendermint/src/lib/use-block-info.ts create mode 100644 libs/tendermint/src/types.ts create mode 100644 libs/tendermint/tsconfig.json create mode 100644 libs/tendermint/tsconfig.lib.json create mode 100644 libs/tendermint/tsconfig.spec.json diff --git a/apps/explorer/src/app/routes/blocks/id/block.tsx b/apps/explorer/src/app/routes/blocks/id/block.tsx index 18153ad54..888988b0a 100644 --- a/apps/explorer/src/app/routes/blocks/id/block.tsx +++ b/apps/explorer/src/app/routes/blocks/id/block.tsx @@ -1,7 +1,5 @@ import { Link, useParams } from 'react-router-dom'; -import { DATA_SOURCES } from '../../../config'; import { getDateTimeFormat } from '@vegaprotocol/utils'; -import type { TendermintBlocksResponse } from '../tendermint-blocks-response'; import { RouteTitle } from '../../../components/route-title'; import { TimeAgo } from '../../../components/time-ago'; import { @@ -14,7 +12,7 @@ import { TxsPerBlock } from '../../../components/txs/txs-per-block'; import { AsyncRenderer, Button } from '@vegaprotocol/ui-toolkit'; import { Routes } from '../../route-names'; import { t } from '@vegaprotocol/i18n'; -import { useFetch } from '@vegaprotocol/react-helpers'; +import { useBlockInfo } from '@vegaprotocol/tendermint'; import { NodeLink } from '../../../components/links'; import { useDocumentTitle } from '../../../hooks/use-document-title'; import EmptyList from '../../../components/empty-list/empty-list'; @@ -24,10 +22,7 @@ const Block = () => { useDocumentTitle(['Blocks', `Block #${block}`]); const { state: { data: blockData, loading, error }, - } = useFetch( - `${DATA_SOURCES.tendermintUrl}/block?height=${block}`, - { cache: 'force-cache' } - ); + } = useBlockInfo(Number(block)); return (
diff --git a/apps/governance/.env b/apps/governance/.env index 7f40a4216..2a0465470 100644 --- a/apps/governance/.env +++ b/apps/governance/.env @@ -18,6 +18,10 @@ NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/annou NX_WALLETCONNECT_PROJECT_ID=fe8091dc35738863e509fc4947525c72 NX_VEGA_REST_URL=https://api.n00.stagnet1.vega.xyz/api/v2/ +NX_TENDERMINT_URL=https://tm.n01.stagnet1.vega.rocks +NX_TENDERMINT_WEBSOCKET_URL=wss://tm.n01.stagnet1.vega.xyz/websocket + #Test configuration variables CYPRESS_FAIRGROUND=false LC_ALL="en_US.UTF-8" + diff --git a/apps/governance/.env.capsule b/apps/governance/.env.capsule index e3769ac14..d4099e074 100644 --- a/apps/governance/.env.capsule +++ b/apps/governance/.env.capsule @@ -19,6 +19,9 @@ NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-stagnet1-k8s.ops.vega.xyz NX_VEGA_REST_URL=http://localhost:3008/api/v2/ +NX_TENDERMINT_URL=http://localhost:26617 +NX_TENDERMINT_WEBSOCKET_URL=wss://localhost:26617/websocket + #Test configuration variables CYPRESS_FAIRGROUND=false diff --git a/apps/governance/.env.devnet b/apps/governance/.env.devnet index 3c3621283..3c90793b6 100644 --- a/apps/governance/.env.devnet +++ b/apps/governance/.env.devnet @@ -13,3 +13,6 @@ 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/ NX_SENTRY_DSN=https://4b8c8a8ba07742648aa4dfe1b8d17e40@o286262.ingest.sentry.io/5882996 + +NX_TENDERMINT_URL=https://tm.be.devnet1.vega.xyz/ +NX_TENDERMINT_WEBSOCKET_URL=wss://be.devnet1.vega.xyz/websocket diff --git a/apps/governance/.env.mainnet b/apps/governance/.env.mainnet index 997aa1142..8781da016 100644 --- a/apps/governance/.env.mainnet +++ b/apps/governance/.env.mainnet @@ -14,3 +14,6 @@ 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/ + +NX_TENDERMINT_URL=https://be.vega.community +NX_TENDERMINT_WEBSOCKET_URL=wss://be.vega.community/websocket diff --git a/apps/governance/.env.mainnet-mirror b/apps/governance/.env.mainnet-mirror index ea22e38a6..fab05ed68 100644 --- a/apps/governance/.env.mainnet-mirror +++ b/apps/governance/.env.mainnet-mirror @@ -13,3 +13,6 @@ NX_DELEGATIONS_PAGINATION=50 NX_TRANCHES_SERVICE_URL=https://tranches-mainnet-mirror-k8s.ops.vega.xyz NX_ANNOUNCEMENTS_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/announcements/mainnet/announcements.json NX_VEGA_REST_URL=https://api.mainnet-mirror.vega.rocks/api/v2/ + +NX_TENDERMINT_URL=https://be.mainnet-mirror.vega.rocks +NX_TENDERMINT_WEBSOCKET_URL=wss://be.mainnet-mirror.vega.rocks/websocket diff --git a/apps/governance/.env.stagnet1 b/apps/governance/.env.stagnet1 index e1871151f..2ac16547a 100644 --- a/apps/governance/.env.stagnet1 +++ b/apps/governance/.env.stagnet1 @@ -9,3 +9,6 @@ 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/ + +NX_TENDERMINT_URL=https://tm.n01.stagnet1.vega.rocks +NX_TENDERMINT_WEBSOCKET_URL=wss://tm.n01.stagnet1.vega.xyz/websocket \ No newline at end of file diff --git a/apps/governance/.env.testnet b/apps/governance/.env.testnet index 85d13bca3..454b47479 100644 --- a/apps/governance/.env.testnet +++ b/apps/governance/.env.testnet @@ -14,3 +14,6 @@ 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/ NX_SENTRY_DSN=https://4b8c8a8ba07742648aa4dfe1b8d17e40@o286262.ingest.sentry.io/5882996 + +NX_TENDERMINT_URL=https://tm.be.testnet.vega.xyz +NX_TENDERMINT_WEBSOCKET_URL=wss://be.testnet.vega.xyz/websocket \ No newline at end of file diff --git a/apps/governance/.env.validators-testnet b/apps/governance/.env.validators-testnet index f01cece2c..169330f85 100644 --- a/apps/governance/.env.validators-testnet +++ b/apps/governance/.env.validators-testnet @@ -11,3 +11,6 @@ NX_VEGA_EXPLORER_URL=https://explorer.validators-testnet.vega.rocks/ 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/ NX_SENTRY_DSN=https://4b8c8a8ba07742648aa4dfe1b8d17e40@o286262.ingest.sentry.io/5882996 + +NX_TENDERMINT_URL=https://tm.be.validators-testnet.vega.rocks +NX_TENDERMINT_WEBSOCKET_URL=wss://be.validators-testnet.vega. \ No newline at end of file diff --git a/apps/governance/src/components/nav/nav.tsx b/apps/governance/src/components/nav/nav.tsx index e9446e198..32c774632 100644 --- a/apps/governance/src/components/nav/nav.tsx +++ b/apps/governance/src/components/nav/nav.tsx @@ -18,6 +18,10 @@ import { VegaWallet } from '../vega-wallet'; import { useLocation, useMatch } from 'react-router-dom'; import { useEffect } from 'react'; import { useTelemetryDialog } from '../telemetry-dialog/telemetry-dialog'; +import { + ProtocolUpgradeCountdown, + ProtocolUpgradeCountdownMode, +} from '@vegaprotocol/proposals'; export const SettingsLink = () => { const { open, isOpen, close } = useTelemetryDialog(); @@ -61,7 +65,14 @@ export const Nav = ({ theme }: Pick) => { appName="Governance" theme={theme} breakpoints={[458, 959]} - actions={} + actions={ + <> + + + + } > { /> )}