Commit 77621de2 authored by tom's avatar tom

constructor args field

parent 37bcdf1f
...@@ -45,6 +45,6 @@ export namespace SocketMessage { ...@@ -45,6 +45,6 @@ export namespace SocketMessage {
export type AddressTxsPending = SocketMessageParamsGeneric<'pending_transaction', { transaction: Transaction }>; export type AddressTxsPending = SocketMessageParamsGeneric<'pending_transaction', { transaction: Transaction }>;
export type AddressTokenTransfer = SocketMessageParamsGeneric<'token_transfer', { token_transfer: TokenTransfer }>; export type AddressTokenTransfer = SocketMessageParamsGeneric<'token_transfer', { token_transfer: TokenTransfer }>;
export type TokenTransfers = SocketMessageParamsGeneric<'token_transfer', {token_transfer: number }>; export type TokenTransfers = SocketMessageParamsGeneric<'token_transfer', {token_transfer: number }>;
export type ContractVerification = SocketMessageParamsGeneric<'verification', unknown>; export type ContractVerification = SocketMessageParamsGeneric<'verification_result', unknown>;
export type Unknown = SocketMessageParamsGeneric<undefined, unknown>; export type Unknown = SocketMessageParamsGeneric<undefined, unknown>;
} }
...@@ -7,27 +7,39 @@ import type { FormFields } from '../types'; ...@@ -7,27 +7,39 @@ import type { FormFields } from '../types';
import CheckboxInput from 'ui/shared/CheckboxInput'; import CheckboxInput from 'ui/shared/CheckboxInput';
import ContractVerificationFormRow from '../ContractVerificationFormRow'; import ContractVerificationFormRow from '../ContractVerificationFormRow';
import ContractVerificationFieldConstructorArgs from './ContractVerificationFieldConstructorArgs';
const ContractVerificationFieldConstArgs = () => { const ContractVerificationFieldAutodetectArgs = () => {
const { formState, control } = useFormContext<FormFields>(); const [ isOn, setIsOn ] = React.useState(true);
const { formState, control, resetField } = useFormContext<FormFields>();
const renderControl = React.useCallback(({ field }: {field: ControllerRenderProps<FormFields, 'constructor_args'>}) => ( const handleCheckboxChange = React.useCallback(() => {
<CheckboxInput<FormFields, 'constructor_args'> !isOn && resetField('constructor_args');
setIsOn(prev => !prev);
}, [ isOn, resetField ]);
const renderControl = React.useCallback(({ field }: {field: ControllerRenderProps<FormFields, 'autodetect_constructor_args'>}) => (
<CheckboxInput<FormFields, 'autodetect_constructor_args'>
text="Try to fetch constructor arguments automatically" text="Try to fetch constructor arguments automatically"
field={ field } field={ field }
isDisabled={ formState.isSubmitting } isDisabled={ formState.isSubmitting }
onChange={ handleCheckboxChange }
/> />
), [ formState.isSubmitting ]); ), [ formState.isSubmitting, handleCheckboxChange ]);
return ( return (
<>
<ContractVerificationFormRow> <ContractVerificationFormRow>
<Controller <Controller
name="constructor_args" name="autodetect_constructor_args"
control={ control } control={ control }
render={ renderControl } render={ renderControl }
defaultValue={ true }
/> />
</ContractVerificationFormRow> </ContractVerificationFormRow>
{ !isOn && <ContractVerificationFieldConstructorArgs/> }
</>
); );
}; };
export default React.memo(ContractVerificationFieldConstArgs); export default React.memo(ContractVerificationFieldAutodetectArgs);
...@@ -9,10 +9,10 @@ import InputPlaceholder from 'ui/shared/InputPlaceholder'; ...@@ -9,10 +9,10 @@ import InputPlaceholder from 'ui/shared/InputPlaceholder';
import ContractVerificationFormRow from '../ContractVerificationFormRow'; import ContractVerificationFormRow from '../ContractVerificationFormRow';
const ContractVerificationFieldAbiEncodedArgs = () => { const ContractVerificationFieldConstructorArgs = () => {
const { formState, control } = useFormContext<FormFields>(); const { formState, control } = useFormContext<FormFields>();
const renderControl = React.useCallback(({ field }: {field: ControllerRenderProps<FormFields, 'abi_encoded_args'>}) => { const renderControl = React.useCallback(({ field }: {field: ControllerRenderProps<FormFields, 'constructor_args'>}) => {
return ( return (
<FormControl variant="floating" id={ field.name } size={{ base: 'md', lg: 'lg' }}> <FormControl variant="floating" id={ field.name } size={{ base: 'md', lg: 'lg' }}>
<Textarea <Textarea
...@@ -28,7 +28,7 @@ const ContractVerificationFieldAbiEncodedArgs = () => { ...@@ -28,7 +28,7 @@ const ContractVerificationFieldAbiEncodedArgs = () => {
return ( return (
<ContractVerificationFormRow> <ContractVerificationFormRow>
<Controller <Controller
name="abi_encoded_args" name="constructor_args"
control={ control } control={ control }
render={ renderControl } render={ renderControl }
/> />
...@@ -44,4 +44,4 @@ const ContractVerificationFieldAbiEncodedArgs = () => { ...@@ -44,4 +44,4 @@ const ContractVerificationFieldAbiEncodedArgs = () => {
); );
}; };
export default React.memo(ContractVerificationFieldAbiEncodedArgs); export default React.memo(ContractVerificationFieldConstructorArgs);
...@@ -11,7 +11,7 @@ import InputPlaceholder from 'ui/shared/InputPlaceholder'; ...@@ -11,7 +11,7 @@ import InputPlaceholder from 'ui/shared/InputPlaceholder';
import ContractVerificationFormRow from '../ContractVerificationFormRow'; import ContractVerificationFormRow from '../ContractVerificationFormRow';
const ContractVerificationFieldOptimization = () => { const ContractVerificationFieldOptimization = () => {
const [ isEnabled, setIsEnabled ] = React.useState(false); const [ isEnabled, setIsEnabled ] = React.useState(true);
const { formState, control } = useFormContext<FormFields>(); const { formState, control } = useFormContext<FormFields>();
const handleCheckboxChange = React.useCallback(() => { const handleCheckboxChange = React.useCallback(() => {
...@@ -49,6 +49,7 @@ const ContractVerificationFieldOptimization = () => { ...@@ -49,6 +49,7 @@ const ContractVerificationFieldOptimization = () => {
name="is_optimization_enabled" name="is_optimization_enabled"
control={ control } control={ control }
render={ renderCheckboxControl } render={ renderCheckboxControl }
defaultValue={ true }
/> />
</ContractVerificationFormRow> </ContractVerificationFormRow>
{ isEnabled && ( { isEnabled && (
...@@ -58,7 +59,7 @@ const ContractVerificationFieldOptimization = () => { ...@@ -58,7 +59,7 @@ const ContractVerificationFieldOptimization = () => {
control={ control } control={ control }
render={ renderInputControl } render={ renderInputControl }
rules={{ required: true }} rules={{ required: true }}
defaultValue="" defaultValue="200"
/> />
</ContractVerificationFormRow> </ContractVerificationFormRow>
) } ) }
......
import React from 'react'; import React from 'react';
import ContractVerificationMethod from '../ContractVerificationMethod'; import ContractVerificationMethod from '../ContractVerificationMethod';
import ContractVerificationFieldAutodetectArgs from '../fields/ContractVerificationFieldAutodetectArgs';
import ContractVerificationFieldCode from '../fields/ContractVerificationFieldCode'; import ContractVerificationFieldCode from '../fields/ContractVerificationFieldCode';
import ContractVerificationFieldCompiler from '../fields/ContractVerificationFieldCompiler'; import ContractVerificationFieldCompiler from '../fields/ContractVerificationFieldCompiler';
import ContractVerificationFieldConstArgs from '../fields/ContractVerificationFieldConstArgs';
import ContractVerificationFieldEvmVersion from '../fields/ContractVerificationFieldEvmVersion'; import ContractVerificationFieldEvmVersion from '../fields/ContractVerificationFieldEvmVersion';
import ContractVerificationFieldIsYul from '../fields/ContractVerificationFieldIsYul'; import ContractVerificationFieldIsYul from '../fields/ContractVerificationFieldIsYul';
import ContractVerificationFieldLibraries from '../fields/ContractVerificationFieldLibraries'; import ContractVerificationFieldLibraries from '../fields/ContractVerificationFieldLibraries';
...@@ -19,7 +19,7 @@ const ContractVerificationFlattenSourceCode = () => { ...@@ -19,7 +19,7 @@ const ContractVerificationFlattenSourceCode = () => {
<ContractVerificationFieldEvmVersion/> <ContractVerificationFieldEvmVersion/>
<ContractVerificationFieldOptimization/> <ContractVerificationFieldOptimization/>
<ContractVerificationFieldCode/> <ContractVerificationFieldCode/>
<ContractVerificationFieldConstArgs/> <ContractVerificationFieldAutodetectArgs/>
<ContractVerificationFieldLibraries/> <ContractVerificationFieldLibraries/>
</ContractVerificationMethod> </ContractVerificationMethod>
); );
......
import React from 'react'; import React from 'react';
import ContractVerificationMethod from '../ContractVerificationMethod'; import ContractVerificationMethod from '../ContractVerificationMethod';
import ContractVerificationFieldAutodetectArgs from '../fields/ContractVerificationFieldAutodetectArgs';
import ContractVerificationFieldCompiler from '../fields/ContractVerificationFieldCompiler'; import ContractVerificationFieldCompiler from '../fields/ContractVerificationFieldCompiler';
import ContractVerificationFieldConstArgs from '../fields/ContractVerificationFieldConstArgs';
import ContractVerificationFieldName from '../fields/ContractVerificationFieldName'; import ContractVerificationFieldName from '../fields/ContractVerificationFieldName';
import ContractVerificationFieldSources from '../fields/ContractVerificationFieldSources'; import ContractVerificationFieldSources from '../fields/ContractVerificationFieldSources';
...@@ -16,7 +16,7 @@ const ContractVerificationStandardInput = () => { ...@@ -16,7 +16,7 @@ const ContractVerificationStandardInput = () => {
title="Standard Input JSON" title="Standard Input JSON"
hint="Upload the standard input JSON file created during contract compilation." hint="Upload the standard input JSON file created during contract compilation."
/> />
<ContractVerificationFieldConstArgs/> <ContractVerificationFieldAutodetectArgs/>
</ContractVerificationMethod> </ContractVerificationMethod>
); );
}; };
......
import React from 'react'; import React from 'react';
import ContractVerificationMethod from '../ContractVerificationMethod'; import ContractVerificationMethod from '../ContractVerificationMethod';
import ContractVerificationFieldAbiEncodedArgs from '../fields/ContractVerificationFieldAbiEncodedArgs';
import ContractVerificationFieldCode from '../fields/ContractVerificationFieldCode'; import ContractVerificationFieldCode from '../fields/ContractVerificationFieldCode';
import ContractVerificationFieldCompiler from '../fields/ContractVerificationFieldCompiler'; import ContractVerificationFieldCompiler from '../fields/ContractVerificationFieldCompiler';
import ContractVerificationFieldConstructorArgs from '../fields/ContractVerificationFieldConstructorArgs';
import ContractVerificationFieldName from '../fields/ContractVerificationFieldName'; import ContractVerificationFieldName from '../fields/ContractVerificationFieldName';
const ContractVerificationVyperContract = () => { const ContractVerificationVyperContract = () => {
...@@ -12,7 +12,7 @@ const ContractVerificationVyperContract = () => { ...@@ -12,7 +12,7 @@ const ContractVerificationVyperContract = () => {
<ContractVerificationFieldName hint="Must match the name specified in the code."/> <ContractVerificationFieldName hint="Must match the name specified in the code."/>
<ContractVerificationFieldCompiler isVyper/> <ContractVerificationFieldCompiler isVyper/>
<ContractVerificationFieldCode isVyper/> <ContractVerificationFieldCode isVyper/>
<ContractVerificationFieldAbiEncodedArgs/> <ContractVerificationFieldConstructorArgs/>
</ContractVerificationMethod> </ContractVerificationMethod>
); );
}; };
......
...@@ -13,7 +13,8 @@ export interface FormFieldsFlattenSourceCode { ...@@ -13,7 +13,8 @@ export interface FormFieldsFlattenSourceCode {
is_optimization_enabled: boolean; is_optimization_enabled: boolean;
optimization_runs: string; optimization_runs: string;
code: string; code: string;
constructor_args: boolean; autodetect_constructor_args: boolean;
constructor_args: string;
libraries: Array<ContractLibrary>; libraries: Array<ContractLibrary>;
} }
...@@ -22,7 +23,8 @@ export interface FormFieldsStandardInput { ...@@ -22,7 +23,8 @@ export interface FormFieldsStandardInput {
name: string; name: string;
compiler: Option; compiler: Option;
sources: Array<File>; sources: Array<File>;
constructor_args: boolean; autodetect_constructor_args: boolean;
constructor_args: string;
} }
export interface FormFieldsSourcify { export interface FormFieldsSourcify {
...@@ -45,7 +47,7 @@ export interface FormFieldsVyperContract { ...@@ -45,7 +47,7 @@ export interface FormFieldsVyperContract {
name: string; name: string;
compiler: Option; compiler: Option;
code: string; code: string;
abi_encoded_args: string; constructor_args: string;
} }
export interface FormFieldsVyperMultiPartFile { export interface FormFieldsVyperMultiPartFile {
......
...@@ -51,7 +51,8 @@ export function prepareRequestBody(data: FormFields): FetchParams['body'] { ...@@ -51,7 +51,8 @@ export function prepareRequestBody(data: FormFields): FetchParams['body'] {
contract_name: data.name, contract_name: data.name,
libraries: reduceLibrariesArray(data.libraries), libraries: reduceLibrariesArray(data.libraries),
evm_version: data.evm_version.value, evm_version: data.evm_version.value,
autodetect_constructor_args: data.constructor_args, autodetect_constructor_args: data.autodetect_constructor_args,
constructor_args: data.constructor_args,
}; };
} }
...@@ -59,7 +60,8 @@ export function prepareRequestBody(data: FormFields): FetchParams['body'] { ...@@ -59,7 +60,8 @@ export function prepareRequestBody(data: FormFields): FetchParams['body'] {
const body = new FormData(); const body = new FormData();
body.set('compiler_version', data.compiler.value); body.set('compiler_version', data.compiler.value);
body.set('contract_name', data.name); body.set('contract_name', data.name);
body.set('autodetect_constructor_args', String(Boolean(data.constructor_args))); body.set('autodetect_constructor_args', String(Boolean(data.autodetect_constructor_args)));
body.set('constructor_args', data.constructor_args);
addFilesToFormData(body, data.sources); addFilesToFormData(body, data.sources);
return body; return body;
...@@ -91,10 +93,19 @@ export function prepareRequestBody(data: FormFields): FetchParams['body'] { ...@@ -91,10 +93,19 @@ export function prepareRequestBody(data: FormFields): FetchParams['body'] {
compiler_version: data.compiler.value, compiler_version: data.compiler.value,
source_code: data.code, source_code: data.code,
contract_name: data.name, contract_name: data.name,
constructor_args: data.abi_encoded_args, constructor_args: data.constructor_args,
}; };
} }
case 'vyper_multi_part': {
const body = new FormData();
body.set('compiler_version', data.compiler.value);
body.set('evm_version', data.evm_version.value);
addFilesToFormData(body, data.sources);
return body;
}
default: { default: {
return {}; return {};
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment