From d71907176fe7661a7bb3ead8efb49417e39d07b4 Mon Sep 17 00:00:00 2001 From: evilpeach Date: Mon, 8 Jul 2024 18:26:28 +0700 Subject: [PATCH 01/30] fix: nft queries --- CHANGELOG.md | 1 + src/lib/query/nft.ts | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1996d6386..79867f6ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes +- [#1015](https://github.com/alleslabs/celatone-frontend/pull/1015) Fix getNftQuery & getNftMintInfoQuery - [#1004](https://github.com/alleslabs/celatone-frontend/pull/1004) Fix empty string moniker - [#1010](https://github.com/alleslabs/celatone-frontend/pull/1010) Fix signer info sign mode multi type validation diff --git a/src/lib/query/nft.ts b/src/lib/query/nft.ts index 7f8fa977c..f3df6dea6 100644 --- a/src/lib/query/nft.ts +++ b/src/lib/query/nft.ts @@ -5,7 +5,7 @@ export const getNftQuery = gql` nfts( where: { collection: { _eq: $collectionAddress } - vm_address: { vm_address: { _eq: $nftAddress } } + id: { _eq: $nftAddress } } ) { token_id @@ -25,10 +25,7 @@ export const getNftQuery = gql` export const getNftMintInfoQuery = gql` query getNftMintInfoQuery($nftAddress: String!) { nft_transactions( - where: { - is_nft_mint: { _eq: true } - nft: { vm_address: { vm_address: { _eq: $nftAddress } } } - } + where: { is_nft_mint: { _eq: true }, nft_id: { _eq: $nftAddress } } offset: 0 limit: 1 ) { From 34f6abe132de713f5408e3dc672f58141dc44ad6 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Wed, 10 Jul 2024 15:43:35 +0700 Subject: [PATCH 02/30] fix: event value null --- CHANGELOG.md | 2 +- src/lib/services/types/tx.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79867f6ff..b837f56fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,7 +57,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes -- [#1015](https://github.com/alleslabs/celatone-frontend/pull/1015) Fix getNftQuery & getNftMintInfoQuery +- [#1016](https://github.com/alleslabs/celatone-frontend/pull/1016) Fix handling event value nullable - [#1004](https://github.com/alleslabs/celatone-frontend/pull/1004) Fix empty string moniker - [#1010](https://github.com/alleslabs/celatone-frontend/pull/1010) Fix signer info sign mode multi type validation diff --git a/src/lib/services/types/tx.ts b/src/lib/services/types/tx.ts index fe4e3c6f4..b96379ff2 100644 --- a/src/lib/services/types/tx.ts +++ b/src/lib/services/types/tx.ts @@ -104,7 +104,7 @@ export type Tx = z.infer; const zEventAttribute = z.object({ key: z.string(), - value: z.string(), + value: z.union([z.string(), z.null().transform(() => "")]), index: z.boolean().optional(), }); From d60e5fe49b187a3d09332482b26addcc7f61ef3a Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Thu, 11 Jul 2024 13:54:04 +0700 Subject: [PATCH 03/30] fix: module txs response --- CHANGELOG.md | 1 + src/lib/services/types/move/module.ts | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b837f56fb..0ad368d49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes +- [#1018](https://github.com/alleslabs/celatone-frontend/pull/1018) Fix module txs response type - [#1016](https://github.com/alleslabs/celatone-frontend/pull/1016) Fix handling event value nullable - [#1004](https://github.com/alleslabs/celatone-frontend/pull/1004) Fix empty string moniker - [#1010](https://github.com/alleslabs/celatone-frontend/pull/1010) Fix signer info sign mode multi type validation diff --git a/src/lib/services/types/move/module.ts b/src/lib/services/types/move/module.ts index a754f088c..611fdcad6 100644 --- a/src/lib/services/types/move/module.ts +++ b/src/lib/services/types/move/module.ts @@ -111,7 +111,6 @@ export type ModuleTableCountsResponse = z.infer< export const zModuleTxsResponse = z.object({ items: z.array(zTxsResponseItem), - total: z.number().nonnegative(), }); export type ModuleTxsResponse = z.infer; From 05941d4475240fea1f0da705c86a96cbb54412dd Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Thu, 18 Jul 2024 11:43:15 +0700 Subject: [PATCH 04/30] fix: default wasm permissionless --- src/lib/components/button/NewProposalButton.tsx | 2 +- src/lib/pages/deploy/index.tsx | 2 +- src/lib/pages/migrate/components/MigrateOptions.tsx | 3 ++- src/lib/pages/proposal/store-code/index.tsx | 3 ++- src/lib/pages/proposal/whitelist/index.tsx | 3 ++- src/lib/pages/stored-codes/index.tsx | 2 +- src/lib/pages/upload/upload.tsx | 2 +- src/lib/services/wasm/code/index.ts | 2 +- 8 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lib/components/button/NewProposalButton.tsx b/src/lib/components/button/NewProposalButton.tsx index a9aa71391..b5ba3826b 100644 --- a/src/lib/components/button/NewProposalButton.tsx +++ b/src/lib/components/button/NewProposalButton.tsx @@ -12,7 +12,7 @@ export const NewProposalButton = () => { const govConfig = useGovConfig({ shouldRedirect: false }); // const { data: govParams } = useGovParams(); // const isPermissionless = - // govParams?.uploadAccess.permission === AccessConfigPermission.EVERYBODY; + // !govParams || govParams.uploadAccess.permission === AccessConfigPermission.EVERYBODY; if (govConfig.enabled && govConfig.hideOpenProposal) return null; diff --git a/src/lib/pages/deploy/index.tsx b/src/lib/pages/deploy/index.tsx index e013a6123..15e9b6848 100644 --- a/src/lib/pages/deploy/index.tsx +++ b/src/lib/pages/deploy/index.tsx @@ -63,7 +63,7 @@ const Deploy = () => { const { data, isFetching } = useUploadAccessParamsLcd(); const isPermissionedNetwork = - data?.permission !== AccessConfigPermission.EVERYBODY; + data && data.permission !== AccessConfigPermission.EVERYBODY; const enableUpload = !isPermissionedNetwork || diff --git a/src/lib/pages/migrate/components/MigrateOptions.tsx b/src/lib/pages/migrate/components/MigrateOptions.tsx index 0b5cd7251..8b18cb2b6 100644 --- a/src/lib/pages/migrate/components/MigrateOptions.tsx +++ b/src/lib/pages/migrate/components/MigrateOptions.tsx @@ -27,7 +27,8 @@ export const MigrateOptions = ({ chainConfig: { prettyName: chainPrettyName }, } = useCelatoneApp(); const isPermissionedNetwork = - uploadAccessParams?.permission !== AccessConfigPermission.EVERYBODY; + uploadAccessParams && + uploadAccessParams.permission !== AccessConfigPermission.EVERYBODY; const isAllowed = resolvePermission( address, uploadAccessParams?.permission, diff --git a/src/lib/pages/proposal/store-code/index.tsx b/src/lib/pages/proposal/store-code/index.tsx index 1c500169a..b2787983b 100644 --- a/src/lib/pages/proposal/store-code/index.tsx +++ b/src/lib/pages/proposal/store-code/index.tsx @@ -100,7 +100,8 @@ const StoreCodeProposal = () => { const { data: uploadAccessParams } = useUploadAccessParamsLcd(); const minDeposit = govParams?.depositParams.minDeposit; const isPermissionless = - uploadAccessParams?.permission === AccessConfigPermission.EVERYBODY; + !uploadAccessParams || + uploadAccessParams.permission === AccessConfigPermission.EVERYBODY; const { validateUserAddress, validateContractAddress } = useValidateAddress(); const submitStoreCodeProposalTx = useSubmitStoreCodeProposalTx(); const { broadcast } = useTxBroadcast(); diff --git a/src/lib/pages/proposal/whitelist/index.tsx b/src/lib/pages/proposal/whitelist/index.tsx index d8572a9b1..a2dd5b2be 100644 --- a/src/lib/pages/proposal/whitelist/index.tsx +++ b/src/lib/pages/proposal/whitelist/index.tsx @@ -100,7 +100,8 @@ const ProposalToWhitelist = () => { const minDeposit = govParams?.depositParams.minDeposit; const isPermissionless = - uploadAccessParams?.permission === AccessConfigPermission.EVERYBODY; + !uploadAccessParams || + uploadAccessParams.permission === AccessConfigPermission.EVERYBODY; const addressesArray = addresses.map((addressObj) => addressObj.address); const formErrorsKey = Object.keys(formErrors); const enabledTx = useMemo( diff --git a/src/lib/pages/stored-codes/index.tsx b/src/lib/pages/stored-codes/index.tsx index 46a6fe0fc..16b524dcd 100644 --- a/src/lib/pages/stored-codes/index.tsx +++ b/src/lib/pages/stored-codes/index.tsx @@ -54,7 +54,7 @@ const StoredCodes = observer(() => { useUploadAccessParamsLcd(); const isPermissionedNetwork = - data?.permission !== AccessConfigPermission.EVERYBODY; + data && data.permission !== AccessConfigPermission.EVERYBODY; const isAllowed = Boolean(address && data?.addresses?.includes(address)); useEffect(() => { diff --git a/src/lib/pages/upload/upload.tsx b/src/lib/pages/upload/upload.tsx index c0a8f153c..401bfee8e 100644 --- a/src/lib/pages/upload/upload.tsx +++ b/src/lib/pages/upload/upload.tsx @@ -39,7 +39,7 @@ export const Upload = ({ } = useUploadCode(onComplete, false); const isPermissionedNetwork = - data?.permission !== AccessConfigPermission.EVERYBODY; + data && data.permission !== AccessConfigPermission.EVERYBODY; const enableUpload = !isPermissionedNetwork || diff --git a/src/lib/services/wasm/code/index.ts b/src/lib/services/wasm/code/index.ts index 748105be3..48db247fe 100644 --- a/src/lib/services/wasm/code/index.ts +++ b/src/lib/services/wasm/code/index.ts @@ -18,7 +18,7 @@ export const useUploadAccessParamsLcd = () => { return useQuery( [CELATONE_QUERY_KEYS.UPLOAD_ACCESS_PARAMS_LCD, endpoint], () => getUploadAccessParamsLcd(endpoint), - { keepPreviousData: true, refetchOnWindowFocus: false } + { keepPreviousData: true, refetchOnWindowFocus: false, retry: false } ); }; From 8212669e6aa261c95e11d530e32bebbd8183452b Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Thu, 18 Jul 2024 12:41:54 +0700 Subject: [PATCH 05/30] fix: precompute is permissioned --- src/lib/pages/deploy/index.tsx | 10 +++------- .../migrate/components/MigrateOptions.tsx | 18 ++++++++---------- src/lib/pages/proposal/store-code/index.tsx | 10 +++++----- src/lib/pages/proposal/whitelist/index.tsx | 18 ++++++++---------- src/lib/pages/stored-codes/index.tsx | 5 +---- src/lib/pages/upload/upload.tsx | 6 +----- src/lib/services/types/wasm/code.ts | 16 ++++++++++------ 7 files changed, 36 insertions(+), 47 deletions(-) diff --git a/src/lib/pages/deploy/index.tsx b/src/lib/pages/deploy/index.tsx index 15e9b6848..ea47a9c27 100644 --- a/src/lib/pages/deploy/index.tsx +++ b/src/lib/pages/deploy/index.tsx @@ -19,7 +19,6 @@ import { Stepper } from "lib/components/stepper"; import { UserDocsLink } from "lib/components/UserDocsLink"; import WasmPageContainer from "lib/components/WasmPageContainer"; import { useUploadAccessParamsLcd } from "lib/services/wasm/code"; -import { AccessConfigPermission } from "lib/types"; const getAlertContent = ( enabled: boolean, @@ -62,11 +61,8 @@ const Deploy = () => { } = useCelatoneApp(); const { data, isFetching } = useUploadAccessParamsLcd(); - const isPermissionedNetwork = - data && data.permission !== AccessConfigPermission.EVERYBODY; - const enableUpload = - !isPermissionedNetwork || + !data?.isPermissionedNetwork || Boolean(address && data?.addresses?.includes(address)); useWasmConfig({ shouldRedirect: true }); @@ -103,7 +99,7 @@ const Deploy = () => { subtitle="You need to connect wallet to proceed this action" mb={4} /> - {address && isPermissionedNetwork && ( + {address && data?.isPermissionedNetwork && ( {icon} {description} @@ -112,7 +108,7 @@ const Deploy = () => { @@ -62,7 +60,7 @@ export const MigrateOptions = ({ disabled={!isAdmin || !isAllowed} title="Upload new WASM File" description={ - isPermissionedNetwork + uploadAccessParams?.isPermissionedNetwork ? "Available for whitelisted addresses only" : "Deploy contract by uploading new Wasm file" } diff --git a/src/lib/pages/proposal/store-code/index.tsx b/src/lib/pages/proposal/store-code/index.tsx index b2787983b..40dded272 100644 --- a/src/lib/pages/proposal/store-code/index.tsx +++ b/src/lib/pages/proposal/store-code/index.tsx @@ -57,7 +57,7 @@ import { useGetMaxLengthError, useTxBroadcast } from "lib/hooks"; import { useGovParamsDeprecated } from "lib/model/proposal"; import { useUploadAccessParamsLcd } from "lib/services/wasm/code"; import type { BechAddr, SimulateStatus, UploadSectionState } from "lib/types"; -import { AccessConfigPermission, AccessType } from "lib/types"; +import { AccessType } from "lib/types"; import { composeStoreCodeProposalMsg, getAmountToVote, @@ -99,9 +99,7 @@ const StoreCodeProposal = () => { const { data: govParams } = useGovParamsDeprecated(); const { data: uploadAccessParams } = useUploadAccessParamsLcd(); const minDeposit = govParams?.depositParams.minDeposit; - const isPermissionless = - !uploadAccessParams || - uploadAccessParams.permission === AccessConfigPermission.EVERYBODY; + const { validateUserAddress, validateContractAddress } = useValidateAddress(); const submitStoreCodeProposalTx = useSubmitStoreCodeProposalTx(); const { broadcast } = useTxBroadcast(); @@ -600,7 +598,9 @@ const StoreCodeProposal = () => { marginTop="128px" metadata={SIDEBAR_STORE_CODE_DETAILS( prettyName, - isPermissionless ? "permissionless" : "permissioned" + uploadAccessParams?.isPermissionedNetwork + ? "permissioned" + : "permissionless" )} /> diff --git a/src/lib/pages/proposal/whitelist/index.tsx b/src/lib/pages/proposal/whitelist/index.tsx index a2dd5b2be..ae79a161a 100644 --- a/src/lib/pages/proposal/whitelist/index.tsx +++ b/src/lib/pages/proposal/whitelist/index.tsx @@ -99,9 +99,6 @@ const ProposalToWhitelist = () => { }); const minDeposit = govParams?.depositParams.minDeposit; - const isPermissionless = - !uploadAccessParams || - uploadAccessParams.permission === AccessConfigPermission.EVERYBODY; const addressesArray = addresses.map((addressObj) => addressObj.address); const formErrorsKey = Object.keys(formErrors); const enabledTx = useMemo( @@ -132,7 +129,7 @@ const ProposalToWhitelist = () => { description, changesValue: JSON.stringify({ ...uploadAccessParams, - permission: !isPermissionless + permission: uploadAccessParams?.isPermissionedNetwork ? AccessConfigPermission.ANY_OF_ADDRESSES : AccessConfigPermission.EVERYBODY, addresses: uploadAccessParams?.addresses?.concat(addressesArray), @@ -146,7 +143,6 @@ const ProposalToWhitelist = () => { addressesArray, description, initialDeposit, - isPermissionless, minDeposit?.precision, title, uploadAccessParams, @@ -243,17 +239,17 @@ const ProposalToWhitelist = () => { templateAreas={`"prespace alert alert postspace" "prespace main sidebar postspace"`} templateColumns="1fr 6fr 4fr 1fr" sx={ - isPermissionless - ? { + uploadAccessParams?.isPermissionedNetwork + ? undefined + : { "> div:not(.permissionless-alert)": { opacity: 0.5, pointerEvents: "none", }, } - : undefined } > - {isPermissionless && ( + {!uploadAccessParams?.isPermissionedNetwork && ( @@ -446,7 +442,9 @@ const ProposalToWhitelist = () => { marginTop="128px" metadata={SIDEBAR_WHITELIST_DETAILS( prettyName, - isPermissionless ? "permissionless" : "permissioned" + uploadAccessParams?.isPermissionedNetwork + ? "permissioned" + : "permissionless" )} /> diff --git a/src/lib/pages/stored-codes/index.tsx b/src/lib/pages/stored-codes/index.tsx index 16b524dcd..2a73705da 100644 --- a/src/lib/pages/stored-codes/index.tsx +++ b/src/lib/pages/stored-codes/index.tsx @@ -20,7 +20,6 @@ import { UserDocsLink } from "lib/components/UserDocsLink"; import type { PermissionFilterValue } from "lib/hooks"; import { useMyCodesData } from "lib/model/code"; import { useUploadAccessParamsLcd } from "lib/services/wasm/code"; -import { AccessConfigPermission } from "lib/types"; import { ProposalButton } from "./components/ProposalButton"; import { UploadButton } from "./components/UploadButton"; @@ -53,8 +52,6 @@ const StoredCodes = observer(() => { const { data, isFetching: isUploadAccessFetching } = useUploadAccessParamsLcd(); - const isPermissionedNetwork = - data && data.permission !== AccessConfigPermission.EVERYBODY; const isAllowed = Boolean(address && data?.addresses?.includes(address)); useEffect(() => { @@ -97,7 +94,7 @@ const StoredCodes = observer(() => { gap={2} borderRadius={8} > - {isPermissionedNetwork ? ( + {data?.isPermissionedNetwork ? ( <> {govConfig.enabled && diff --git a/src/lib/pages/upload/upload.tsx b/src/lib/pages/upload/upload.tsx index 401bfee8e..5551cbf12 100644 --- a/src/lib/pages/upload/upload.tsx +++ b/src/lib/pages/upload/upload.tsx @@ -15,7 +15,6 @@ import { UserDocsLink } from "lib/components/UserDocsLink"; import WasmPageContainer from "lib/components/WasmPageContainer"; import { useUploadCode } from "lib/hooks"; import { useUploadAccessParamsLcd } from "lib/services/wasm/code"; -import { AccessConfigPermission } from "lib/types"; export const Upload = ({ onComplete, @@ -38,11 +37,8 @@ export const Upload = ({ isDisabledProcess, } = useUploadCode(onComplete, false); - const isPermissionedNetwork = - data && data.permission !== AccessConfigPermission.EVERYBODY; - const enableUpload = - !isPermissionedNetwork || + !data?.isPermissionedNetwork || (address && Boolean(data?.addresses?.includes(address))); useEffect(() => { diff --git a/src/lib/services/types/wasm/code.ts b/src/lib/services/types/wasm/code.ts index 90a61635b..3961746e4 100644 --- a/src/lib/services/types/wasm/code.ts +++ b/src/lib/services/types/wasm/code.ts @@ -11,10 +11,15 @@ import { } from "lib/types"; import { parseTxHash, snakeToCamel } from "lib/utils"; -const zUploadAccessParams = z.object({ - permission: z.nativeEnum(AccessConfigPermission), - addresses: zBechAddr.array(), -}); +const zUploadAccessParams = z + .object({ + permission: z.nativeEnum(AccessConfigPermission), + addresses: zBechAddr.array(), + }) + .transform((val) => ({ + isPermissionedNetwork: val.permission === AccessConfigPermission.EVERYBODY, + ...val, + })); export type UploadAccessParams = z.infer; export const zUploadAccessParamsLcd = z @@ -23,8 +28,7 @@ export const zUploadAccessParamsLcd = z code_upload_access: zUploadAccessParams, }), }) - .transform(snakeToCamel) - .transform((val) => val.params.codeUploadAccess); + .transform((val) => val.params.code_upload_access); export const zUploadAccessParamsSubspaceLcd = z .object({ From e6d1619c50a52de14f79a57474dbb77c1ee5afee Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Thu, 18 Jul 2024 12:55:01 +0700 Subject: [PATCH 06/30] fix: comment --- src/lib/services/types/wasm/code.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/services/types/wasm/code.ts b/src/lib/services/types/wasm/code.ts index 3961746e4..f2c753346 100644 --- a/src/lib/services/types/wasm/code.ts +++ b/src/lib/services/types/wasm/code.ts @@ -17,7 +17,7 @@ const zUploadAccessParams = z addresses: zBechAddr.array(), }) .transform((val) => ({ - isPermissionedNetwork: val.permission === AccessConfigPermission.EVERYBODY, + isPermissionedNetwork: val.permission !== AccessConfigPermission.EVERYBODY, ...val, })); export type UploadAccessParams = z.infer; From e5c3c779c2cc50bc92bb3089bb6db8ab211767be Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Thu, 18 Jul 2024 18:50:05 +0700 Subject: [PATCH 07/30] fix: temp landlord config --- src/config/chain/initia.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/chain/initia.ts b/src/config/chain/initia.ts index 50597bcfa..f9789dfec 100644 --- a/src/config/chain/initia.ts +++ b/src/config/chain/initia.ts @@ -440,7 +440,7 @@ export const INITIA_CHAIN_CONFIGS: ChainConfigs = { }, }, "landlord-1": { - tier: "full", + tier: "sequencer", chain: "initia", registryChainName: "civitiatestnet", prettyName: "Civitia", @@ -471,7 +471,7 @@ export const INITIA_CHAIN_CONFIGS: ChainConfigs = { enabled: false, }, nft: { - enabled: true, + enabled: false, }, }, gas: { From 855409c87a525f235a04e5d50ad6523d9fc05db0 Mon Sep 17 00:00:00 2001 From: evilpeach Date: Tue, 16 Jul 2024 22:03:47 +0700 Subject: [PATCH 08/30] fix: add missing menu items for sequencer tier --- CHANGELOG.md | 1 + src/lib/layout/mobile/NavDrawer.tsx | 95 +++++++++++++++++++---------- src/lib/layout/mobile/utils.ts | 67 ++++++++++++++++++++ 3 files changed, 131 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f03674107..0404fd2e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes +- [#1026](https://github.com/alleslabs/celatone-frontend/pull/1026) Add missing menu items for sequencer tier - [#1025](https://github.com/alleslabs/celatone-frontend/pull/1025) Handle new tx query params for contract txs ## v1.7.1 diff --git a/src/lib/layout/mobile/NavDrawer.tsx b/src/lib/layout/mobile/NavDrawer.tsx index 0a96a6846..6be428c39 100644 --- a/src/lib/layout/mobile/NavDrawer.tsx +++ b/src/lib/layout/mobile/NavDrawer.tsx @@ -12,6 +12,7 @@ import { Text, useDisclosure, } from "@chakra-ui/react"; +import { useMemo } from "react"; import { NetworkMenu } from "../NetworkMenu"; import { AmpEvent, track } from "lib/amplitude"; @@ -29,10 +30,14 @@ import { CustomIcon } from "lib/components/icon"; import { useIsCurrentPage } from "lib/hooks"; import { usePublicProjectStore } from "lib/providers/store"; -import { getNavDrawerFull, getNavDrawerLite } from "./utils"; +import { + getNavDrawerFull, + getNavDrawerLite, + getNavDrawerSequencer, +} from "./utils"; export const NavDrawer = () => { - const { isFullTier } = useTierConfig(); + const { tier } = useTierConfig(); const govConfig = useGovConfig({ shouldRedirect: false }); const wasmConfig = useWasmConfig({ shouldRedirect: false }); const moveConfig = useMoveConfig({ shouldRedirect: false }); @@ -43,37 +48,63 @@ export const NavDrawer = () => { const { getSavedPublicProjects } = usePublicProjectStore(); const { isOpen, onOpen, onClose } = useDisclosure(); - const navMenu = isFullTier - ? getNavDrawerFull( - govConfig.enabled, - wasmConfig.enabled, - moveConfig.enabled, - nftConfig.enabled - ) - : getNavDrawerLite( - govConfig.enabled, - wasmConfig.enabled, - moveConfig.enabled - ); + const navMenu = useMemo(() => { + let navMenuTmp = []; + switch (tier) { + case "full": + navMenuTmp = getNavDrawerFull( + govConfig.enabled, + wasmConfig.enabled, + moveConfig.enabled, + nftConfig.enabled + ); + break; + case "sequencer": + navMenuTmp = getNavDrawerSequencer( + govConfig.enabled, + wasmConfig.enabled, + moveConfig.enabled + ); + break; + case "lite": + navMenuTmp = getNavDrawerLite( + govConfig.enabled, + wasmConfig.enabled, + moveConfig.enabled + ); + break; + default: + throw new Error(`Invalid tier: ${tier}`); + } + + if (publicProject.enabled) + navMenuTmp.push({ + category: "Public Projects", + slug: "public-projects", + submenu: [ + ...getSavedPublicProjects().map((list) => ({ + name: list.name, + slug: `/projects/${list.slug}`, + logo: list.logo, + })), + { + name: "View All Projects", + slug: "/projects", + icon: "public-project" as IconKeys, + }, + ], + }); - if (publicProject.enabled) { - navMenu.push({ - category: "Public Projects", - slug: "public-projects", - submenu: [ - ...getSavedPublicProjects().map((list) => ({ - name: list.name, - slug: `/projects/${list.slug}`, - logo: list.logo, - })), - { - name: "View All Projects", - slug: "/projects", - icon: "public-project" as IconKeys, - }, - ], - }); - } + return navMenuTmp; + }, [ + getSavedPublicProjects, + govConfig.enabled, + moveConfig.enabled, + nftConfig.enabled, + publicProject.enabled, + tier, + wasmConfig.enabled, + ]); return ( <> diff --git a/src/lib/layout/mobile/utils.ts b/src/lib/layout/mobile/utils.ts index 123fa8549..afac44fab 100644 --- a/src/lib/layout/mobile/utils.ts +++ b/src/lib/layout/mobile/utils.ts @@ -1,3 +1,4 @@ +/* eslint-disable sonarjs/no-duplicate-string */ import type { MenuInfo } from "../navbar/types"; import type { IconKeys } from "lib/components/icon"; @@ -52,6 +53,72 @@ export const getNavDrawerLite = ( }, ]; +export const getNavDrawerSequencer = ( + isGov: boolean, + isWasm: boolean, + isMove: boolean +): MenuInfo[] => [ + { + category: "Overview", + slug: "overview", + submenu: [ + { name: "Overview", slug: "/", icon: "home" as IconKeys }, + { + name: "Transactions", + slug: "/txs", + icon: "file" as IconKeys, + }, + { + name: "Blocks", + slug: "/blocks", + icon: "block" as IconKeys, + }, + ...(isGov + ? [ + { + name: "Validators", + slug: "/validators", + icon: "validator" as IconKeys, + }, + { + name: "Proposals", + slug: "/proposals", + icon: "proposal" as IconKeys, + }, + ] + : []), + ...(isWasm + ? [ + { + name: "Codes", + slug: "/codes", + icon: "code" as IconKeys, + }, + { + name: "Query", + slug: "/interact-contract", + icon: "query" as IconKeys, + }, + ] + : []), + ...(isMove + ? [ + { + name: "0x1 Page", + slug: "/account/0x1", + icon: "hex" as IconKeys, + }, + { + name: "View Module", + slug: "/interact", + icon: "query" as IconKeys, + }, + ] + : []), + ], + }, +]; + export const getNavDrawerFull = ( isGov: boolean, isWasm: boolean, From 81abfa86cadaeee5f2527aa7f1c3b17351b22eaa Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Wed, 17 Jul 2024 14:59:37 +0700 Subject: [PATCH 09/30] fix: balances pagination null --- CHANGELOG.md | 1 + src/lib/services/bank/lcd.ts | 2 +- src/lib/services/types/bank.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0404fd2e9..3ed127464 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#1026](https://github.com/alleslabs/celatone-frontend/pull/1026) Add missing menu items for sequencer tier - [#1025](https://github.com/alleslabs/celatone-frontend/pull/1025) Handle new tx query params for contract txs +- [#1027](https://github.com/alleslabs/celatone-frontend/pull/1027) Fix balances pagination nullable ## v1.7.1 diff --git a/src/lib/services/bank/lcd.ts b/src/lib/services/bank/lcd.ts index 21ab37172..b530f1066 100644 --- a/src/lib/services/bank/lcd.ts +++ b/src/lib/services/bank/lcd.ts @@ -20,7 +20,7 @@ export const getBalancesLcd = async ( }) .then(({ data }) => parseWithError(zBalancesReponseLcd, data)); result.push(...res.balances); - if (res.pagination.nextKey) await fetchFn(res.pagination.nextKey); + if (res.pagination?.nextKey) await fetchFn(res.pagination.nextKey); }; await fetchFn(null); diff --git a/src/lib/services/types/bank.ts b/src/lib/services/types/bank.ts index 31ae3be85..925961417 100644 --- a/src/lib/services/types/bank.ts +++ b/src/lib/services/types/bank.ts @@ -7,7 +7,7 @@ export const zBalancesResponse = z.array(zCoin); export const zBalancesReponseLcd = z.object({ balances: zBalancesResponse, - pagination: zPagination, + pagination: zPagination.nullable(), }); export interface BalanceInfos { From cb42d93ccb7d713fdcb490b3a327c37430ef2c35 Mon Sep 17 00:00:00 2001 From: evilpeach Date: Fri, 26 Jul 2024 10:26:11 +0700 Subject: [PATCH 10/30] docs: cut release v.1.7.2 --- CHANGELOG.md | 8 ++++++++ package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 118f03625..937f27198 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +### Improvements + +### Bug fixes + +## v1.7.2 + +### Features + - [#1037](https://github.com/alleslabs/celatone-frontend/pull/1037) Add Sequencer for Collection details - [#997](https://github.com/alleslabs/celatone-frontend/pull/997) Redesign asset selector - [#1033](https://github.com/alleslabs/celatone-frontend/pull/1033) Add Sequencer for NFT details diff --git a/package.json b/package.json index 5d6717e65..cefec5ea9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "celatone", - "version": "1.7.1", + "version": "1.7.2", "author": "Alles Labs", "contributors": [ { From e46aa247a8234ecbfdddd9636a686f8b5acf2fdf Mon Sep 17 00:00:00 2001 From: evilpeach Date: Tue, 6 Aug 2024 11:52:37 +0700 Subject: [PATCH 11/30] docs: cut release v1.7.3 --- CHANGELOG.md | 8 ++++++++ package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b011b580d..85525e6ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +### Improvements + +### Bug fixes + +## v1.7.3 + +### Features + - [#1058](https://github.com/alleslabs/celatone-frontend/pull/1058) Show chain config JSON and remove modal - [#1057](https://github.com/alleslabs/celatone-frontend/pull/1057) Add local minitias to network selector - [#1043](https://github.com/alleslabs/celatone-frontend/pull/1043) Save custom minitias JSON form to localstorage diff --git a/package.json b/package.json index 6383b91e7..11cd2d2df 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "celatone", - "version": "1.7.2", + "version": "1.7.3", "author": "Alles Labs", "contributors": [ { From f8fd0a24670398f46d38b033e06faedb1f2d1071 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Wed, 21 Aug 2024 23:57:51 +0700 Subject: [PATCH 12/30] fix: git regex --- .../modal/wasm-verify-submit/WasmVerifySubmitForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/modal/wasm-verify-submit/WasmVerifySubmitForm.tsx b/src/lib/components/modal/wasm-verify-submit/WasmVerifySubmitForm.tsx index 107886f03..870a43ad9 100644 --- a/src/lib/components/modal/wasm-verify-submit/WasmVerifySubmitForm.tsx +++ b/src/lib/components/modal/wasm-verify-submit/WasmVerifySubmitForm.tsx @@ -59,7 +59,7 @@ export const WasmVerifySubmitForm = ({ message: "Please provide the source code’s GitHub commit URL", }) .regex( - /^https:\/\/github\.com\/.+$/, + /^https:\/\/github\.com\/[^/]+\/[^/]+$/, "Please enter GitHub URL in format: https://github.com/username/repository" ) .url({ From 27c125186ec901c90a83779a506cc71b11130b98 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:34:16 +0700 Subject: [PATCH 13/30] feat: v1.8.1 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 284e5982b..a9e178eec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,7 +35,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## v1.8.1 ### Features From 5926de2b76c7e2fc79ba6dcb5d820c9d331f7e9c Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Fri, 30 Aug 2024 16:55:55 +0700 Subject: [PATCH 14/30] fix: default chain config --- src/lib/app-provider/contexts/app.tsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/lib/app-provider/contexts/app.tsx b/src/lib/app-provider/contexts/app.tsx index 5410e4968..33ed75c37 100644 --- a/src/lib/app-provider/contexts/app.tsx +++ b/src/lib/app-provider/contexts/app.tsx @@ -17,11 +17,7 @@ import type { ProjectConstants } from "config/project"; import { PROJECT_CONSTANTS } from "config/project"; import { FALLBACK_THEME, getTheme } from "config/theme"; import type { ThemeConfig } from "config/theme/types"; -import { - FALLBACK_SUPPORTED_CHAIN_ID, - HASURA_ADMIN_SECRET, - SUPPORTED_CHAIN_IDS, -} from "env"; +import { HASURA_ADMIN_SECRET, SUPPORTED_CHAIN_IDS } from "env"; import { changeFavicon } from "lib/utils"; import { DEFAULT_CHAIN_CONFIG } from "./default"; @@ -44,7 +40,7 @@ interface AppContextInterface { const DEFAULT_STATES: AppContextInterface = { isHydrated: false, availableChainIds: SUPPORTED_CHAIN_IDS, - currentChainId: FALLBACK_SUPPORTED_CHAIN_ID, + currentChainId: "", chainConfig: DEFAULT_CHAIN_CONFIG, indexerGraphClient: new GraphQLClient(DEFAULT_CHAIN_CONFIG.graphql ?? "", { headers: { @@ -72,6 +68,7 @@ export const AppProvider = observer(({ children }: AppProviderProps) => { if (!chainConfig) { setStates({ ...DEFAULT_STATES, + currentChainId: newChainId, isHydrated: true, }); From cf1bbd386cdb1acd99a2703a869e7b172866d0a6 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:02:57 +0700 Subject: [PATCH 15/30] feat: cut 1.9.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d300d512..928830027 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,7 +35,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 1.9.0 ### Features From f2960745f790c1ea9bb218af5626db07baf5dd98 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:19:15 +0700 Subject: [PATCH 16/30] fix: package json version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 38d7d20e5..b7bed1614 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "celatone", - "version": "1.7.3", + "version": "1.9.0", "author": "Alles Labs", "contributors": [ { From 7b26fa849408e43cc10738e888b03c77c16026eb Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:55:58 +0700 Subject: [PATCH 17/30] feat: cut 1.9.1 --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 922e1c1cd..e3f65f2c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,9 +35,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased - -### Features +## v1.9.1 ### Improvements From c02582276d285401dd91a27478b79d6a14fab744 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Tue, 24 Sep 2024 11:10:30 +0700 Subject: [PATCH 18/30] fix: package version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5643333dc..eade86821 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "celatone", - "version": "1.9.0", + "version": "1.9.1", "author": "Alles Labs", "contributors": [ { From 61123d3be33902c1b8f3da05a54d94b06101d809 Mon Sep 17 00:00:00 2001 From: Poafs1 Date: Thu, 17 Oct 2024 10:00:58 +0700 Subject: [PATCH 19/30] fix: initiation-2 --- README.md | 2 +- .../hooks/useAllowCustomNetworks.ts | 2 +- src/lib/components/button/FaucetButton.tsx | 26 ------------------- src/lib/components/button/index.ts | 1 - src/lib/hooks/useEaster.ts | 2 +- src/lib/layout/Header.tsx | 11 -------- src/lib/services/username/lcd.ts | 6 ++--- 7 files changed, 6 insertions(+), 44 deletions(-) delete mode 100644 src/lib/components/button/FaucetButton.tsx diff --git a/README.md b/README.md index 2e18c7000..847a8e427 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ The website will then be live on [http://localhost:3000](http://localhost:3000) - (move only) setting another variable `NEXT_PUBLIC_INITIA_MOVE_DECODER` ```bash -NEXT_PUBLIC_SUPPORTED_CHAIN_IDS=initiation-1, +NEXT_PUBLIC_SUPPORTED_CHAIN_IDS=initiation-2, # move only NEXT_PUBLIC_INITIA_MOVE_DECODER=https://celatone-move-api-prod-jiod42ec2q-as.a.run.app diff --git a/src/lib/app-provider/hooks/useAllowCustomNetworks.ts b/src/lib/app-provider/hooks/useAllowCustomNetworks.ts index aed65b67d..3d8e82503 100644 --- a/src/lib/app-provider/hooks/useAllowCustomNetworks.ts +++ b/src/lib/app-provider/hooks/useAllowCustomNetworks.ts @@ -10,7 +10,7 @@ export const useAllowCustomNetworks = ({ const { supportedChainIds } = useChainConfigs(); const isAllow = supportedChainIds.some( - (chainId) => chainId === "initiation-1" + (chainId) => chainId === "initiation-2" ); if (!isAllow && shouldRedirect) navigate({ pathname: "/", replace: true }); diff --git a/src/lib/components/button/FaucetButton.tsx b/src/lib/components/button/FaucetButton.tsx deleted file mode 100644 index e69a1c1a3..000000000 --- a/src/lib/components/button/FaucetButton.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { Button } from "@chakra-ui/react"; - -import { CustomIcon } from "../icon"; - -interface FaucetButtonProps { - faucetUrl: string; -} - -export const FaucetButton = ({ faucetUrl }: FaucetButtonProps) => ( - - - -); diff --git a/src/lib/components/button/index.ts b/src/lib/components/button/index.ts index 5864fb344..0bd8b672f 100644 --- a/src/lib/components/button/index.ts +++ b/src/lib/components/button/index.ts @@ -6,5 +6,4 @@ export * from "./RedoButton"; export * from "./ResendButton"; export * from "./ShowMoreButton"; export * from "./CustomIconButton"; -export * from "./FaucetButton"; export * from "./SubmitButton"; diff --git a/src/lib/hooks/useEaster.ts b/src/lib/hooks/useEaster.ts index 1a488934a..20b69fb25 100644 --- a/src/lib/hooks/useEaster.ts +++ b/src/lib/hooks/useEaster.ts @@ -6,7 +6,7 @@ import { useCelatoneApp } from "lib/app-provider"; export const useEaster = (keyword: string) => { const { currentChainId, setTheme } = useCelatoneApp(); useEffect(() => { - if (currentChainId === "initiation-1" && keyword.toLowerCase() === "jennie") + if (currentChainId === "initiation-2" && keyword.toLowerCase() === "jennie") setTheme(JENNIE_THEME); }, [currentChainId, keyword, setTheme]); }; diff --git a/src/lib/layout/Header.tsx b/src/lib/layout/Header.tsx index 832ea939e..7d9ef90f0 100644 --- a/src/lib/layout/Header.tsx +++ b/src/lib/layout/Header.tsx @@ -2,7 +2,6 @@ import { Flex, Image } from "@chakra-ui/react"; import { useCelatoneApp, useInitia } from "lib/app-provider"; import { AppLink } from "lib/components/AppLink"; -import { FaucetButton } from "lib/components/button"; import { WalletSection } from "lib/components/Wallet"; import { AppMenu } from "./AppMenu"; @@ -12,11 +11,6 @@ import { SectionWrapper } from "./SectionWrapper"; const Header = () => { const { theme } = useCelatoneApp(); - const { - chainConfig: { - extra: { faucetUrl }, - }, - } = useCelatoneApp(); const isInitia = useInitia(); return ( { - {faucetUrl && ( - - - - )} diff --git a/src/lib/services/username/lcd.ts b/src/lib/services/username/lcd.ts index 468fd7792..d9f0215ad 100644 --- a/src/lib/services/username/lcd.ts +++ b/src/lib/services/username/lcd.ts @@ -3,13 +3,13 @@ import type { HexAddr, HexAddr32 } from "lib/types"; import { zHexAddr } from "lib/types"; import { parseWithError } from "lib/utils"; -const INITIATION_1_LCD = "https://lcd.initiation-1.initia.xyz"; +const INITIATION_2_LCD = "https://rest.initiation-2.initia.xyz"; const USERNAME_MODULE_ADDRESS = "0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a" as HexAddr32; export const getInitiaUsernameByAddress = async (address: HexAddr) => getMoveViewJsonLcd( - INITIATION_1_LCD, + INITIATION_2_LCD, USERNAME_MODULE_ADDRESS, "usernames", "get_name_from_address", @@ -19,7 +19,7 @@ export const getInitiaUsernameByAddress = async (address: HexAddr) => export const getAddressByInitiaUsername = async (username: string) => getMoveViewJsonLcd( - INITIATION_1_LCD, + INITIATION_2_LCD, USERNAME_MODULE_ADDRESS, "usernames", "get_address_from_name", From fca31d5e2c93333a419bde768948691108ba2d9d Mon Sep 17 00:00:00 2001 From: Poafs1 Date: Thu, 17 Oct 2024 10:08:17 +0700 Subject: [PATCH 20/30] docs: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3f65f2c3..5527b2711 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bug fixes +- [#1163](https://github.com/alleslabs/celatone-frontend/pull/1163) Fix hardcode initiation-1 to support new initiation-2 - [#1159](https://github.com/alleslabs/celatone-frontend/pull/1159) Fix search showing invalid proposal and pool id - [#1158](https://github.com/alleslabs/celatone-frontend/pull/1158) Fix incorrect msg detail extraction, total deposits is null in proposal - [#1150](https://github.com/alleslabs/celatone-frontend/pull/1150) Fix camel case on message From 986bab8b2235e570cd36333c9e7833f7475c3686 Mon Sep 17 00:00:00 2001 From: Poafs1 Date: Thu, 17 Oct 2024 10:13:49 +0700 Subject: [PATCH 21/30] feat(components): faucet btn --- src/lib/components/button/FaucetButton.tsx | 26 ++++++++++++++++++++++ src/lib/components/button/index.ts | 1 + src/lib/layout/Header.tsx | 13 ++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/button/FaucetButton.tsx diff --git a/src/lib/components/button/FaucetButton.tsx b/src/lib/components/button/FaucetButton.tsx new file mode 100644 index 000000000..e69a1c1a3 --- /dev/null +++ b/src/lib/components/button/FaucetButton.tsx @@ -0,0 +1,26 @@ +import { Button } from "@chakra-ui/react"; + +import { CustomIcon } from "../icon"; + +interface FaucetButtonProps { + faucetUrl: string; +} + +export const FaucetButton = ({ faucetUrl }: FaucetButtonProps) => ( + + + +); diff --git a/src/lib/components/button/index.ts b/src/lib/components/button/index.ts index 0bd8b672f..6fffab743 100644 --- a/src/lib/components/button/index.ts +++ b/src/lib/components/button/index.ts @@ -1,6 +1,7 @@ export * from "./AdminButton"; export * from "./BackButton"; export * from "./ConnectWallet"; +export * from "./FaucetButton"; export * from "./InstantiateButton"; export * from "./RedoButton"; export * from "./ResendButton"; diff --git a/src/lib/layout/Header.tsx b/src/lib/layout/Header.tsx index 7d9ef90f0..e7c894735 100644 --- a/src/lib/layout/Header.tsx +++ b/src/lib/layout/Header.tsx @@ -2,6 +2,7 @@ import { Flex, Image } from "@chakra-ui/react"; import { useCelatoneApp, useInitia } from "lib/app-provider"; import { AppLink } from "lib/components/AppLink"; +import { FaucetButton } from "lib/components/button"; import { WalletSection } from "lib/components/Wallet"; import { AppMenu } from "./AppMenu"; @@ -10,7 +11,12 @@ import { SearchComponent } from "./search"; import { SectionWrapper } from "./SectionWrapper"; const Header = () => { - const { theme } = useCelatoneApp(); + const { + theme, + chainConfig: { + extra: { faucetUrl }, + }, + } = useCelatoneApp(); const isInitia = useInitia(); return ( { + {faucetUrl && ( + + + + )} From efcc756c78881714e4edf690b627cc520b53ffa7 Mon Sep 17 00:00:00 2001 From: Poafs1 Date: Thu, 17 Oct 2024 10:16:04 +0700 Subject: [PATCH 22/30] fix: sort export alphabet --- src/lib/components/button/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/button/index.ts b/src/lib/components/button/index.ts index 6fffab743..7e9cca59a 100644 --- a/src/lib/components/button/index.ts +++ b/src/lib/components/button/index.ts @@ -1,10 +1,10 @@ export * from "./AdminButton"; export * from "./BackButton"; export * from "./ConnectWallet"; +export * from "./CustomIconButton"; export * from "./FaucetButton"; export * from "./InstantiateButton"; export * from "./RedoButton"; export * from "./ResendButton"; export * from "./ShowMoreButton"; -export * from "./CustomIconButton"; export * from "./SubmitButton"; From eccc8e678350d31979a06671c5803189debfcaef Mon Sep 17 00:00:00 2001 From: evilpeach Date: Thu, 17 Oct 2024 14:07:47 +0700 Subject: [PATCH 23/30] chore: remove miniswap from app menu --- CHANGELOG.md | 1 + src/lib/layout/AppMenu.tsx | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5527b2711..9a903f2e2 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 ### Improvements +- [#1165](https://github.com/alleslabs/celatone-frontend/pull/1165) Remove Miniswap from App menu - [#1157](https://github.com/alleslabs/celatone-frontend/pull/1157) Remove graphql and change faucet button - [#1156](https://github.com/alleslabs/celatone-frontend/pull/1156) Update osmosis pools to get data from API instead of GraphQL - [#1148](https://github.com/alleslabs/celatone-frontend/pull/1148) Update NFT collections to get data from API instead of GraphQL diff --git a/src/lib/layout/AppMenu.tsx b/src/lib/layout/AppMenu.tsx index 8116ef813..fbdb51074 100644 --- a/src/lib/layout/AppMenu.tsx +++ b/src/lib/layout/AppMenu.tsx @@ -20,11 +20,6 @@ const appList = [ logo: "https://assets.alleslabs.dev/integrations/initia/app-logo/scan.svg", link: "https://scan.testnet.initia.xyz/", }, - { - name: "minitswap", - logo: "https://assets.alleslabs.dev/integrations/initia/app-logo/minitswap.svg", - link: "https://minitswap.testnet.initia.xyz/", - }, { name: "usernames", logo: "https://assets.alleslabs.dev/integrations/initia/app-logo/usernames.svg", From 8a5deb049d68b1cee3b112830851e7e4c54c9091 Mon Sep 17 00:00:00 2001 From: Poafs1 Date: Fri, 18 Oct 2024 11:12:46 +0700 Subject: [PATCH 24/30] fix(components): chart voting power --- .../bonded-token-changes/VotingPowerChart.tsx | 6 +++++- .../VotingPowerChartDetails.tsx | 13 ++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx index bcb6d9dc0..51487a3cc 100644 --- a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx +++ b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx @@ -54,7 +54,11 @@ export const VotingPowerChart = ({ }); const dataset = { - data: historicalPowers.items.map((item) => item.votingPower.toNumber()), + data: historicalPowers.items.map((item) => + singleStakingDenom + ? item.votingPower.toNumber() + : item.votingPower.div(1e6).toNumber() + ), borderColor: "#4CE2F7", backgroundColor: (context: ScriptableContext<"line">) => { const { ctx } = context.chart; diff --git a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx index bda144a92..6580b4136 100644 --- a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx +++ b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx @@ -38,8 +38,9 @@ export const VotingPowerChartDetails = ({ const currentPrice = isHistoricalPowersContainsData ? formatUTokenWithPrecision( - historicalPowers.items[historicalPowers.items.length - 1] - .votingPower as U>, + historicalPowers.items[ + historicalPowers.items.length - 1 + ].votingPower.div(singleStakingDenom ? 1 : 1e6) as U>, assetInfo?.precision ?? 0, true, 2 @@ -47,9 +48,11 @@ export const VotingPowerChartDetails = ({ : ""; const compareVotingPower = isHistoricalPowersContainsData - ? historicalPowers.items[ - historicalPowers.items.length - 1 - ].votingPower.minus(historicalPowers.items[0].votingPower) + ? historicalPowers.items[historicalPowers.items.length - 1].votingPower + .minus( + historicalPowers.items[historicalPowers.items.length - 25].votingPower + ) + .div(singleStakingDenom ? 1 : 1e6) : big(0); const formattedVotingPower = `${formatArithmetic(compareVotingPower)}${formatUTokenWithPrecision( From 568259cee0ffd213358f295c3172ef383d5a519d Mon Sep 17 00:00:00 2001 From: evilpeach Date: Fri, 18 Oct 2024 18:46:24 +0700 Subject: [PATCH 25/30] fix: normailze the voting power by dividing 1e6 --- CHANGELOG.md | 1 + .../bonded-token-changes/VotingPowerChart.tsx | 22 +++++++++---- .../VotingPowerChartDetails.tsx | 32 ++++++++++++------- .../ValidatorDetailsBodyFull.tsx | 19 +++++++++-- .../ValidatorDetailsBodyLite.tsx | 21 ++++++++++-- .../components/validators-table/index.tsx | 21 +++++++++--- 6 files changed, 87 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a903f2e2..61c155e77 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 ### Improvements +- [#1167](https://github.com/alleslabs/celatone-frontend/pull/1167) Normalize voting power for Initia - [#1165](https://github.com/alleslabs/celatone-frontend/pull/1165) Remove Miniswap from App menu - [#1157](https://github.com/alleslabs/celatone-frontend/pull/1157) Remove graphql and change faucet button - [#1156](https://github.com/alleslabs/celatone-frontend/pull/1156) Update osmosis pools to get data from API instead of GraphQL diff --git a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx index 51487a3cc..d7cf10b7d 100644 --- a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx +++ b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx @@ -35,11 +35,23 @@ export const VotingPowerChart = ({ const isMobile = useMobile(); const isMobileOverview = isMobile && !!onViewMore; - const { data: historicalPowers, isLoading } = + const { data: rawHistoricalPowers, isLoading } = useValidatorHistoricalPowers(validatorAddress); if (isLoading) return ; - if (!historicalPowers) return ; + if (!rawHistoricalPowers) + return ; + + // NOTE: Divided by 1e6 in case of initial case + const historicalPowers = { + ...rawHistoricalPowers, + items: rawHistoricalPowers.items.map((item) => ({ + ...item, + votingPower: singleStakingDenom + ? item.votingPower + : item.votingPower.div(1e6), // Initia case + })), + }; const assetInfo = singleStakingDenom ? assetInfos?.[singleStakingDenom] @@ -54,11 +66,7 @@ export const VotingPowerChart = ({ }); const dataset = { - data: historicalPowers.items.map((item) => - singleStakingDenom - ? item.votingPower.toNumber() - : item.votingPower.div(1e6).toNumber() - ), + data: historicalPowers.items.map((item) => item.votingPower.toNumber()), borderColor: "#4CE2F7", backgroundColor: (context: ScriptableContext<"line">) => { const { ctx } = context.chart; diff --git a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx index 6580b4136..f57eff92e 100644 --- a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx +++ b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx @@ -1,5 +1,6 @@ import { Flex, Heading, Text } from "@chakra-ui/react"; import type Big from "big.js"; +import { useMemo } from "react"; import type { HistoricalPowersResponse } from "lib/services/types"; import { big } from "lib/types"; @@ -36,24 +37,31 @@ export const VotingPowerChartDetails = ({ const isHistoricalPowersContainsData = historicalPowers && historicalPowers.items.length > 0; - const currentPrice = isHistoricalPowersContainsData + const currentVotingPower = isHistoricalPowersContainsData ? formatUTokenWithPrecision( - historicalPowers.items[ - historicalPowers.items.length - 1 - ].votingPower.div(singleStakingDenom ? 1 : 1e6) as U>, + historicalPowers.items[historicalPowers.items.length - 1] + .votingPower as U>, assetInfo?.precision ?? 0, true, 2 ) : ""; - const compareVotingPower = isHistoricalPowersContainsData - ? historicalPowers.items[historicalPowers.items.length - 1].votingPower - .minus( - historicalPowers.items[historicalPowers.items.length - 25].votingPower - ) - .div(singleStakingDenom ? 1 : 1e6) - : big(0); + // NOTE: compute 24 hrs voting power change + const compareVotingPower = useMemo(() => { + try { + return isHistoricalPowersContainsData + ? historicalPowers.items[ + historicalPowers.items.length - 1 + ].votingPower.minus( + historicalPowers.items[historicalPowers.items.length - 25] + .votingPower + ) + : big(0); + } catch { + return big(0); + } + }, [historicalPowers.items, isHistoricalPowersContainsData]); const formattedVotingPower = `${formatArithmetic(compareVotingPower)}${formatUTokenWithPrecision( compareVotingPower.abs() as U>, @@ -68,7 +76,7 @@ export const VotingPowerChartDetails = ({ {singleStakingDenom ? "Current Bonded Token" : "Current Voting Powers"} - {currentPrice} {currency} + {currentVotingPower} {currency} diff --git a/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx b/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx index fe884f661..b1c96f266 100644 --- a/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx +++ b/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx @@ -63,6 +63,10 @@ export const ValidatorDetailsBodyLite = ({ if (!data) return ; if (!foundValidator) return ; + const selfVotingPower = delegations?.length + ? big(delegations[0].balance.amount) + : big(0); + return ( <> @@ -90,10 +94,21 @@ export const ValidatorDetailsBodyLite = ({ details={foundValidator.details} singleStakingDenom={stakingParams?.bondDenom} assetInfos={assetInfos} - votingPower={foundValidator.votingPower} - totalVotingPower={totalVotingPower} + // NOTE: Divided by 1e6 in case of initial case + votingPower={ + stakingParams?.bondDenom + ? foundValidator.votingPower + : foundValidator.votingPower.div(1e6) + } + totalVotingPower={ + stakingParams?.bondDenom + ? totalVotingPower + : totalVotingPower.div(1e6) + } selfVotingPower={ - delegations?.length ? big(delegations[0].balance.amount) : big(0) + stakingParams?.bondDenom + ? selfVotingPower + : selfVotingPower.div(1e6) } /> ({ + ...validator, + votingPower: stakingParams?.bondDenom + ? validator.votingPower + : validator.votingPower.div(1e6), + })); + return ( <> {isMobile ? ( - {data.items.map((validator) => ( + {validators.map((validator) => ( - {data.items.map((validator) => ( + {validators.map((validator) => ( Date: Mon, 21 Oct 2024 00:03:09 +0700 Subject: [PATCH 26/30] fix: reduce redundancy --- .../bonded-token-changes/VotingPowerChart.tsx | 21 +++---------- .../VotingPowerChartDetails.tsx | 20 +++++------- .../ValidatorDetailsBodyFull.tsx | 19 ++---------- .../ValidatorDetailsBodyLite.tsx | 21 ++----------- .../VotingPowerOverview.tsx | 5 ++- .../ValidatorsTableMobileCard.tsx | 12 +++---- .../validators-table/ValidatorsTableRow.tsx | 12 +++---- .../components/validators-table/index.tsx | 31 +++++-------------- src/lib/utils/validator.ts | 22 ++++++++++++- 9 files changed, 61 insertions(+), 102 deletions(-) diff --git a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx index d7cf10b7d..74d9d0fc7 100644 --- a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx +++ b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChart.tsx @@ -14,6 +14,7 @@ import { formatMMMDD, formatUTC, formatUTokenWithPrecision, + getStakingAssetInfo, getTokenLabel, } from "lib/utils"; @@ -35,27 +36,13 @@ export const VotingPowerChart = ({ const isMobile = useMobile(); const isMobileOverview = isMobile && !!onViewMore; - const { data: rawHistoricalPowers, isLoading } = + const { data: historicalPowers, isLoading } = useValidatorHistoricalPowers(validatorAddress); if (isLoading) return ; - if (!rawHistoricalPowers) - return ; - - // NOTE: Divided by 1e6 in case of initial case - const historicalPowers = { - ...rawHistoricalPowers, - items: rawHistoricalPowers.items.map((item) => ({ - ...item, - votingPower: singleStakingDenom - ? item.votingPower - : item.votingPower.div(1e6), // Initia case - })), - }; + if (!historicalPowers) return ; - const assetInfo = singleStakingDenom - ? assetInfos?.[singleStakingDenom] - : undefined; + const assetInfo = getStakingAssetInfo(singleStakingDenom, assetInfos); const currency = singleStakingDenom ? `${getTokenLabel(singleStakingDenom, assetInfo?.symbol)}` diff --git a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx index f57eff92e..c77854186 100644 --- a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx +++ b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx @@ -49,18 +49,14 @@ export const VotingPowerChartDetails = ({ // NOTE: compute 24 hrs voting power change const compareVotingPower = useMemo(() => { - try { - return isHistoricalPowersContainsData - ? historicalPowers.items[ - historicalPowers.items.length - 1 - ].votingPower.minus( - historicalPowers.items[historicalPowers.items.length - 25] - .votingPower - ) - : big(0); - } catch { - return big(0); - } + return isHistoricalPowersContainsData + ? historicalPowers.items[ + historicalPowers.items.length - 1 + ].votingPower.minus( + historicalPowers.items[historicalPowers.items.length - 25] + ?.votingPower ?? big(0) + ) + : big(0); }, [historicalPowers.items, isHistoricalPowersContainsData]); const formattedVotingPower = `${formatArithmetic(compareVotingPower)}${formatUTokenWithPrecision( diff --git a/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyFull.tsx b/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyFull.tsx index 81bbd28a0..241d0cae9 100644 --- a/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyFull.tsx +++ b/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyFull.tsx @@ -122,22 +122,9 @@ export const ValidatorDetailsBodyFull = ({ details={data.info.details} singleStakingDenom={stakingParams?.bondDenom} assetInfos={assetInfos} - // NOTE: Divided by 1e6 for initia case - votingPower={ - stakingParams?.bondDenom - ? data.info.votingPower - : data.info.votingPower.div(1e6) - } - totalVotingPower={ - stakingParams?.bondDenom - ? data.totalVotingPower - : data.totalVotingPower.div(1e6) - } - selfVotingPower={ - stakingParams?.bondDenom - ? data.selfVotingPower - : data.selfVotingPower.div(1e6) - } + votingPower={data.info.votingPower} + totalVotingPower={data.totalVotingPower} + selfVotingPower={data.selfVotingPower} /> diff --git a/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx b/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx index b1c96f266..fe884f661 100644 --- a/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx +++ b/src/lib/pages/validator-details/components/validator-details-body/ValidatorDetailsBodyLite.tsx @@ -63,10 +63,6 @@ export const ValidatorDetailsBodyLite = ({ if (!data) return ; if (!foundValidator) return ; - const selfVotingPower = delegations?.length - ? big(delegations[0].balance.amount) - : big(0); - return ( <> @@ -94,21 +90,10 @@ export const ValidatorDetailsBodyLite = ({ details={foundValidator.details} singleStakingDenom={stakingParams?.bondDenom} assetInfos={assetInfos} - // NOTE: Divided by 1e6 in case of initial case - votingPower={ - stakingParams?.bondDenom - ? foundValidator.votingPower - : foundValidator.votingPower.div(1e6) - } - totalVotingPower={ - stakingParams?.bondDenom - ? totalVotingPower - : totalVotingPower.div(1e6) - } + votingPower={foundValidator.votingPower} + totalVotingPower={totalVotingPower} selfVotingPower={ - stakingParams?.bondDenom - ? selfVotingPower - : selfVotingPower.div(1e6) + delegations?.length ? big(delegations[0].balance.amount) : big(0) } /> { const { isFullTier } = useTierConfig(); const isMobile = useMobile(); - const assetInfo = singleStakingDenom - ? assetInfos?.[singleStakingDenom] - : undefined; + const assetInfo = getStakingAssetInfo(singleStakingDenom, assetInfos); const votingPowerPercent = formatPrettyPercent( divWithDefault( diff --git a/src/lib/pages/validators/components/validators-table/ValidatorsTableMobileCard.tsx b/src/lib/pages/validators/components/validators-table/ValidatorsTableMobileCard.tsx index 4de8bbebc..ddff854ef 100644 --- a/src/lib/pages/validators/components/validators-table/ValidatorsTableMobileCard.tsx +++ b/src/lib/pages/validators/components/validators-table/ValidatorsTableMobileCard.tsx @@ -5,10 +5,10 @@ import { useInternalNavigate } from "lib/app-provider"; import { MobileCardTemplate, MobileLabel } from "lib/components/table"; import { ValidatorBadge } from "lib/components/ValidatorBadge"; import type { + AssetInfo, Option, Ratio, Token, - TokenWithValue, U, ValidatorData, } from "lib/types"; @@ -24,7 +24,7 @@ interface ValidatorsTableMobileCardProps { isActive: boolean; totalVotingPower: Big; minCommissionRate: number; - denomToken: Option; + assetInfo: Option; showUptime: boolean; } export const ValidatorsTableMobileCard = ({ @@ -32,7 +32,7 @@ export const ValidatorsTableMobileCard = ({ isActive, totalVotingPower, minCommissionRate, - denomToken, + assetInfo, showUptime, }: ValidatorsTableMobileCardProps) => { const navigate = useInternalNavigate(); @@ -92,12 +92,12 @@ export const ValidatorsTableMobileCard = ({ ( {formatUTokenWithPrecision( validator.votingPower as U>, - denomToken?.precision ?? 0, + assetInfo?.precision ?? 0, false, 2 )} - {denomToken - ? ` ${getTokenLabel(denomToken.denom, denomToken.symbol)}` + {assetInfo?.id + ? ` ${getTokenLabel(assetInfo.id, assetInfo.symbol)}` : undefined} ) diff --git a/src/lib/pages/validators/components/validators-table/ValidatorsTableRow.tsx b/src/lib/pages/validators/components/validators-table/ValidatorsTableRow.tsx index accbfa6ef..a56efe900 100644 --- a/src/lib/pages/validators/components/validators-table/ValidatorsTableRow.tsx +++ b/src/lib/pages/validators/components/validators-table/ValidatorsTableRow.tsx @@ -6,10 +6,10 @@ import { useInternalNavigate } from "lib/app-provider"; import { TableRow } from "lib/components/table"; import { ValidatorBadge } from "lib/components/ValidatorBadge"; import type { + AssetInfo, Option, Ratio, Token, - TokenWithValue, U, ValidatorAddr, ValidatorData, @@ -27,7 +27,7 @@ interface ValidatorsTableRowProps { validator: ValidatorData; totalVotingPower: Big; minCommissionRate: number; - denomToken: Option; + assetInfo: Option; showUptime: boolean; } @@ -37,7 +37,7 @@ export const ValidatorsTableRow = ({ validator, totalVotingPower, minCommissionRate, - denomToken, + assetInfo, showUptime, }: ValidatorsTableRowProps) => { const navigate = useInternalNavigate(); @@ -93,12 +93,12 @@ export const ValidatorsTableRow = ({ ( {formatUTokenWithPrecision( validator.votingPower as U>, - denomToken?.precision ?? 0, + assetInfo?.precision ?? 0, false, 2 )} - {denomToken - ? ` ${getTokenLabel(denomToken.denom, denomToken.symbol)}` + {assetInfo?.id + ? ` ${getTokenLabel(assetInfo.id, assetInfo.symbol)}` : undefined} ) diff --git a/src/lib/pages/validators/components/validators-table/index.tsx b/src/lib/pages/validators/components/validators-table/index.tsx index 468e1eb93..3314fa09e 100644 --- a/src/lib/pages/validators/components/validators-table/index.tsx +++ b/src/lib/pages/validators/components/validators-table/index.tsx @@ -11,7 +11,7 @@ import { useAssetInfos } from "lib/services/assetService"; import { useStakingParamsLcd } from "lib/services/staking"; import type { ValidatorsResponse } from "lib/services/types"; import type { Option } from "lib/types"; -import { coinToTokenWithValue } from "lib/utils"; +import { getStakingAssetInfo } from "lib/utils"; import { ValidatorsPercentDivider } from "./ValidatorsPercentDivider"; import { ValidatorsTableHeader } from "./ValidatorsTableHeader"; @@ -66,36 +66,21 @@ export const ValidatorsTable = ({ ); const displayDividers = order === ValidatorOrder.VotingPower && isDesc; - const denomToken = stakingParams?.bondDenom - ? coinToTokenWithValue(stakingParams.bondDenom, "0", assetInfos) - : undefined; + const assetInfo = getStakingAssetInfo(stakingParams?.bondDenom, assetInfos); const templateColumns = `${isActive ? "64px " : ""}3fr 2fr ${showUptime ? "110px" : ""} 110px`; - - // NOTE: Divided by 1e6 in case of initia case - const totalVotingPower = stakingParams?.bondDenom - ? data.metadata.totalVotingPower - : data.metadata.totalVotingPower.div(1e6); - - const validators = data.items.map((validator) => ({ - ...validator, - votingPower: stakingParams?.bondDenom - ? validator.votingPower - : validator.votingPower.div(1e6), - })); - return ( <> {isMobile ? ( - {validators.map((validator) => ( + {data.items.map((validator) => ( ))} @@ -112,15 +97,15 @@ export const ValidatorsTable = ({ setIsDesc={setIsDesc} showUptime={showUptime} /> - {validators.map((validator) => ( + {data.items.map((validator) => ( {displayDividers && diff --git a/src/lib/utils/validator.ts b/src/lib/utils/validator.ts index 30784749d..ccaf6e74c 100644 --- a/src/lib/utils/validator.ts +++ b/src/lib/utils/validator.ts @@ -1,7 +1,7 @@ import { Ripemd160, sha256 } from "@cosmjs/crypto"; import { fromBase64, fromHex, toBech32, toHex } from "@cosmjs/encoding"; -import type { ConsensusPubkey } from "lib/types"; +import type { AssetInfo, AssetInfos, ConsensusPubkey, Option } from "lib/types"; import { zConsensusAddr } from "lib/types"; export const convertRawConsensusAddrToConsensusAddr = ( @@ -30,3 +30,23 @@ export const convertConsensusPubkeyToConsensusAddr = ( return zConsensusAddr.parse(""); }; + +export const getStakingAssetInfo = ( + singleStakingDenom: Option, + assetInfos: Option +): Option => { + if (singleStakingDenom) return assetInfos?.[singleStakingDenom]; + // NOTE: divided by 1e6 for initia case + return { + coingecko: "", + description: "", + id: "", + logo: "", + name: "", + precision: 6, + price: 0, + slugs: [], + symbol: "", + type: "", + }; +}; From 59b6d049e986a4024230e81c49b7480820d47f6f Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Mon, 21 Oct 2024 00:09:09 +0700 Subject: [PATCH 27/30] fix: readability --- .../VotingPowerChartDetails.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx index c77854186..a5ca9925e 100644 --- a/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx +++ b/src/lib/pages/validator-details/components/bonded-token-changes/VotingPowerChartDetails.tsx @@ -49,14 +49,15 @@ export const VotingPowerChartDetails = ({ // NOTE: compute 24 hrs voting power change const compareVotingPower = useMemo(() => { - return isHistoricalPowersContainsData - ? historicalPowers.items[ - historicalPowers.items.length - 1 - ].votingPower.minus( - historicalPowers.items[historicalPowers.items.length - 25] - ?.votingPower ?? big(0) - ) - : big(0); + if (isHistoricalPowersContainsData) { + const presentVotingPower = + historicalPowers.items[historicalPowers.items.length - 1].votingPower; + const yesterdayVotingPower = + historicalPowers.items[historicalPowers.items.length - 25] + ?.votingPower ?? big(0); + return presentVotingPower.minus(yesterdayVotingPower); + } + return big(0); }, [historicalPowers.items, isHistoricalPowersContainsData]); const formattedVotingPower = `${formatArithmetic(compareVotingPower)}${formatUTokenWithPrecision( From 6e789ee76c65a0f68186e6203ece4af5c02d2c35 Mon Sep 17 00:00:00 2001 From: evilpeach Date: Mon, 21 Oct 2024 11:22:02 +0700 Subject: [PATCH 28/30] docs: remove changelog --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61c155e77..9a903f2e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,7 +39,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Improvements -- [#1167](https://github.com/alleslabs/celatone-frontend/pull/1167) Normalize voting power for Initia - [#1165](https://github.com/alleslabs/celatone-frontend/pull/1165) Remove Miniswap from App menu - [#1157](https://github.com/alleslabs/celatone-frontend/pull/1157) Remove graphql and change faucet button - [#1156](https://github.com/alleslabs/celatone-frontend/pull/1156) Update osmosis pools to get data from API instead of GraphQL From fb2d8ddb449c2676a364966d37503f05ff5e57f8 Mon Sep 17 00:00:00 2001 From: evilpeach Date: Fri, 25 Oct 2024 11:05:03 +0700 Subject: [PATCH 29/30] docs: cut release 1.9.2 --- CHANGELOG.md | 8 ++++++-- package.json | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d7893856..01afadbea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,12 +41,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Improvements +### Bug fixes + +## v1.9.2 + +### Improvements + - [#1169](https://github.com/alleslabs/celatone-frontend/pull/1169) Fix minor bugs - [#1168](https://github.com/alleslabs/celatone-frontend/pull/1168) Normalized voting power by 1e6 for Initia - [#1162](https://github.com/alleslabs/celatone-frontend/pull/1162) Proxy move verify through celatone verification api first -### Bug fixes - ## v1.9.1 ### Improvements diff --git a/package.json b/package.json index eade86821..a4ca76b97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "celatone", - "version": "1.9.1", + "version": "1.9.2", "author": "Alles Labs", "contributors": [ { From 45e61de4bedcbcbacbfad5ec7e3a9f3251aa46ce Mon Sep 17 00:00:00 2001 From: Songwong Tasneeyapant <16089160+songwongtp@users.noreply.github.com> Date: Sat, 26 Oct 2024 21:04:25 +0700 Subject: [PATCH 30/30] fix: yParity optional --- src/lib/services/types/tx.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/services/types/tx.ts b/src/lib/services/types/tx.ts index 4cd989b1e..33b93555f 100644 --- a/src/lib/services/types/tx.ts +++ b/src/lib/services/types/tx.ts @@ -447,7 +447,7 @@ export const zTxJsonRpc = z.object({ v: z.string(), r: z.string(), s: z.string(), - yParity: z.string(), + yParity: z.string().optional(), }); export const zTxReceiptJsonRpc = z.object({