Commit 05fe199d authored by tom's avatar tom

add custom abi alert and minor fixes

parent ff96d0f2
...@@ -57,6 +57,22 @@ export const read: Array<SmartContractReadMethod> = [ ...@@ -57,6 +57,22 @@ export const read: Array<SmartContractReadMethod> = [
stateMutability: 'view', stateMutability: 'view',
type: 'function', type: 'function',
}, },
{
constant: true,
inputs: [],
method_id: '165ec2e2',
name: 'arianeeWhitelist',
outputs: [
{
name: '',
type: 'address',
value: '0xd3eee7f8e8021db24825c3457d5479f2b57f40ef',
},
],
payable: false,
stateMutability: 'view',
type: 'function',
},
]; ];
export const readResultSuccess: SmartContractQueryMethodReadSuccess = { export const readResultSuccess: SmartContractQueryMethodReadSuccess = {
......
import { Alert } from '@chakra-ui/react';
import React from 'react';
const ContractCustomAbiAlert = () => {
return (
<Alert status="warning" mb={ 4 }>
Note: Contract with custom ABI is only meant for debugging purpose and it is the user’s responsibility to ensure that the provided ABI
matches the contract, otherwise errors may occur or results returned may be incorrect.
Blockscout is not responsible for any losses that arise from the use of Read & Write contract.
</Alert>
);
};
export default React.memo(ContractCustomAbiAlert);
...@@ -27,7 +27,13 @@ const ContractMethodField = ({ control, name, placeholder, setValue, isDisabled, ...@@ -27,7 +27,13 @@ const ContractMethodField = ({ control, name, placeholder, setValue, isDisabled,
const renderInput = React.useCallback(({ field }: { field: ControllerRenderProps<MethodFormFields> }) => { const renderInput = React.useCallback(({ field }: { field: ControllerRenderProps<MethodFormFields> }) => {
return ( return (
<FormControl id={ name } flexBasis={{ base: '100%', lg: 'calc((100% - 24px) / 3 - 65px)' }} w="auto" flexGrow={ 1 } isDisabled={ isDisabled }> <FormControl
id={ name }
flexBasis={{ base: '100%', lg: 'calc((100% - 24px) / 3 - 65px)' }}
w={{ base: '100%', lg: 'auto' }}
flexGrow={ 1 }
isDisabled={ isDisabled
}>
<InputGroup size="xs"> <InputGroup size="xs">
<Input <Input
{ ...field } { ...field }
......
...@@ -12,6 +12,7 @@ import ContentLoader from 'ui/shared/ContentLoader'; ...@@ -12,6 +12,7 @@ import ContentLoader from 'ui/shared/ContentLoader';
import DataFetchAlert from 'ui/shared/DataFetchAlert'; import DataFetchAlert from 'ui/shared/DataFetchAlert';
import ContractConnectWallet from './ContractConnectWallet'; import ContractConnectWallet from './ContractConnectWallet';
import ContractCustomAbiAlert from './ContractCustomAbiAlert';
import ContractImplementationAddress from './ContractImplementationAddress'; import ContractImplementationAddress from './ContractImplementationAddress';
import ContractMethodCallable from './ContractMethodCallable'; import ContractMethodCallable from './ContractMethodCallable';
import ContractMethodConstant from './ContractMethodConstant'; import ContractMethodConstant from './ContractMethodConstant';
...@@ -91,6 +92,7 @@ const ContractRead = ({ isProxy, isCustomAbi }: Props) => { ...@@ -91,6 +92,7 @@ const ContractRead = ({ isProxy, isCustomAbi }: Props) => {
return ( return (
<> <>
{ isCustomAbi && <ContractCustomAbiAlert/> }
<ContractConnectWallet/> <ContractConnectWallet/>
{ isProxy && <ContractImplementationAddress hash={ addressHash }/> } { isProxy && <ContractImplementationAddress hash={ addressHash }/> }
<ContractMethodsAccordion data={ data } renderContent={ renderContent }/> <ContractMethodsAccordion data={ data } renderContent={ renderContent }/>
......
...@@ -13,6 +13,7 @@ import DataFetchAlert from 'ui/shared/DataFetchAlert'; ...@@ -13,6 +13,7 @@ import DataFetchAlert from 'ui/shared/DataFetchAlert';
import { useContractContext } from './context'; import { useContractContext } from './context';
import ContractConnectWallet from './ContractConnectWallet'; import ContractConnectWallet from './ContractConnectWallet';
import ContractCustomAbiAlert from './ContractCustomAbiAlert';
import ContractImplementationAddress from './ContractImplementationAddress'; import ContractImplementationAddress from './ContractImplementationAddress';
import ContractMethodCallable from './ContractMethodCallable'; import ContractMethodCallable from './ContractMethodCallable';
import ContractWriteResult from './ContractWriteResult'; import ContractWriteResult from './ContractWriteResult';
...@@ -119,6 +120,7 @@ const ContractWrite = ({ isProxy, isCustomAbi }: Props) => { ...@@ -119,6 +120,7 @@ const ContractWrite = ({ isProxy, isCustomAbi }: Props) => {
return ( return (
<> <>
{ isCustomAbi && <ContractCustomAbiAlert/> }
<ContractConnectWallet/> <ContractConnectWallet/>
{ isProxy && <ContractImplementationAddress hash={ addressHash }/> } { isProxy && <ContractImplementationAddress hash={ addressHash }/> }
<ContractMethodsAccordion data={ data } renderContent={ renderContent }/> <ContractMethodsAccordion data={ data } renderContent={ renderContent }/>
......
...@@ -64,7 +64,7 @@ const AddressPageContent = () => { ...@@ -64,7 +64,7 @@ const AddressPageContent = () => {
{ id: 'read_proxy', title: 'Read proxy', component: <ContractRead isProxy/> } : { id: 'read_proxy', title: 'Read proxy', component: <ContractRead isProxy/> } :
undefined, undefined,
addressQuery.data?.has_custom_methods_read ? addressQuery.data?.has_custom_methods_read ?
{ id: 'read_custom_methods', title: 'Read custom methods', component: <ContractRead isCustomAbi/> } : { id: 'read_custom_methods', title: 'Read custom', component: <ContractRead isCustomAbi/> } :
undefined, undefined,
addressQuery.data?.has_methods_write ? addressQuery.data?.has_methods_write ?
{ id: 'write_contract', title: 'Write contract', component: <ContractWrite/> } : { id: 'write_contract', title: 'Write contract', component: <ContractWrite/> } :
...@@ -73,7 +73,7 @@ const AddressPageContent = () => { ...@@ -73,7 +73,7 @@ const AddressPageContent = () => {
{ id: 'write_proxy', title: 'Write proxy', component: <ContractWrite isProxy/> } : { id: 'write_proxy', title: 'Write proxy', component: <ContractWrite isProxy/> } :
undefined, undefined,
addressQuery.data?.has_custom_methods_write ? addressQuery.data?.has_custom_methods_write ?
{ id: 'write_custom_methods', title: 'Write custom methods', component: <ContractWrite isCustomAbi/> } : { id: 'write_custom_methods', title: 'Write custom', component: <ContractWrite isCustomAbi/> } :
undefined, undefined,
].filter(notEmpty); ].filter(notEmpty);
}, [ addressQuery.data ]); }, [ addressQuery.data ]);
......
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