From dc1dc5096f3ef223b9fd3bd209db4d3ad86ea788 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Tue, 11 Feb 2025 00:22:33 +0700 Subject: [PATCH 1/2] feat: validate evm verify form options --- CHANGELOG.md | 1 + .../components/ContractLibraries.tsx | 55 ++----- .../components/ContractLibrary.tsx | 56 +++++++ .../components/OptimizerConfiguration.tsx | 9 +- .../EvmContractVerifySolidityContractCode.tsx | 2 +- src/lib/pages/evm-contract-verify/index.tsx | 141 +++++++++++++----- src/lib/services/types/verification/evm.ts | 85 +++++++---- 7 files changed, 231 insertions(+), 118 deletions(-) create mode 100644 src/lib/pages/evm-contract-verify/components/ContractLibrary.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e64af976..358eed71a 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 +- [#1225](https://github.com/alleslabs/celatone-frontend/pull/1225) Validate EVM Verification form options - [#1223](https://github.com/alleslabs/celatone-frontend/pull/1223) Support Vyper on EVM contract details - [#1220](https://github.com/alleslabs/celatone-frontend/pull/1220) Add EVM contract verification for Solidity with contract code (flattened method) - [#1219](https://github.com/alleslabs/celatone-frontend/pull/1219) Add tooltip to full editor sidebar diff --git a/src/lib/pages/evm-contract-verify/components/ContractLibraries.tsx b/src/lib/pages/evm-contract-verify/components/ContractLibraries.tsx index 5b6229144..6ce3c73fa 100644 --- a/src/lib/pages/evm-contract-verify/components/ContractLibraries.tsx +++ b/src/lib/pages/evm-contract-verify/components/ContractLibraries.tsx @@ -1,18 +1,16 @@ import { Button, Checkbox, Grid, Heading, Stack, Text } from "@chakra-ui/react"; -import { useExampleAddresses } from "lib/app-provider"; -import { ControllerInput } from "lib/components/forms"; import { CustomIcon } from "lib/components/icon"; -import { truncate } from "lib/utils"; import { ArrayPath, Control, FieldArray, + FieldArrayPath, FieldPath, FieldValues, useController, useFieldArray, - useWatch, } from "react-hook-form"; +import { ContractLibrary } from "./ContractLibrary"; interface ContractLibrariesProps { control: Control; @@ -23,21 +21,14 @@ export const ContractLibraries = ({ control, name, }: ContractLibrariesProps) => { - const { evmContract: exampleContractAddress } = useExampleAddresses(); - const { field } = useController({ control, - name: `${name}.contractLibraries` as FieldPath, - }); - - const contractLibraries = useWatch({ - control, - name: `${name}.contractLibraries` as FieldPath, + name: `${name}.contractLibraries.enabled` as FieldPath, }); const { fields, append, remove } = useFieldArray({ control, - name: `${name}.contractLibraries.value` as ArrayPath, + name: `${name}.contractLibraries.value` as FieldArrayPath, }); return ( @@ -53,10 +44,8 @@ export const ContractLibraries = ({ - field.onChange({ ...field.value, enabled: e.target.checked }) - } + isChecked={field.value} + onChange={(e) => field.onChange(e.target.checked)} > Have contract libraries @@ -66,35 +55,13 @@ export const ContractLibraries = ({ px={3} bgColor="gray.900" borderRadius="md" - display={contractLibraries.enabled ? "flex" : "none"} + display={field.value ? "flex" : "none"} > - {fields.map((field, index) => ( - - - } - control={control} - variant="fixed-floating" - /> - - } + {fields.map(({ id }, index) => ( + + control={control} - variant="fixed-floating" + name={`${name}.contractLibraries.value.${index}` as FieldPath} />