diff --git a/packages/website/src/features/Packages/Abi.tsx b/packages/website/src/features/Packages/Abi.tsx index 5e82f5eeb..ed2d2bfda 100644 --- a/packages/website/src/features/Packages/Abi.tsx +++ b/packages/website/src/features/Packages/Abi.tsx @@ -66,6 +66,7 @@ export const Abi: FC<{ address: viem.Address; cannonOutputs: ChainArtifacts; chainId: number; + contractName?: string; contractSource?: string; onDrawerOpen?: () => void; packageUrl?: string; @@ -73,6 +74,7 @@ export const Abi: FC<{ isLoading, abi, contractSource, + contractName, address, cannonOutputs, chainId, @@ -313,6 +315,7 @@ export const Abi: FC<{ cannonOutputs={cannonOutputs} chainId={chainId} contractSource={contractSource} + contractName={contractName} onDrawerOpen={onDrawerOpen} collapsible showFunctionSelector={false} diff --git a/packages/website/src/features/Packages/Function.tsx b/packages/website/src/features/Packages/Function.tsx index ae4d1275d..29cb009e3 100644 --- a/packages/website/src/features/Packages/Function.tsx +++ b/packages/website/src/features/Packages/Function.tsx @@ -75,6 +75,7 @@ export const Function: FC<{ address: Address; cannonOutputs: ChainArtifacts; chainId: number; + contractName?: string; contractSource?: string; onDrawerOpen?: () => void; collapsible?: boolean; @@ -86,6 +87,7 @@ export const Function: FC<{ abi /*, cannonOutputs */, address, chainId, + contractName, contractSource, onDrawerOpen, collapsible, @@ -295,9 +297,6 @@ export const Function: FC<{ } } - const regex = /\/([^/]+)\.sol$/; - const contractName = contractSource?.match(regex)?.[1] || 'Unknown'; - setQueuedIdentifiableTxns({ queuedIdentifiableTxns: [ ...queuedIdentifiableTxns, diff --git a/packages/website/src/features/Packages/FunctionInput.tsx b/packages/website/src/features/Packages/FunctionInput.tsx index 916249d45..379c9e9d3 100644 --- a/packages/website/src/features/Packages/FunctionInput.tsx +++ b/packages/website/src/features/Packages/FunctionInput.tsx @@ -88,8 +88,13 @@ export const FunctionInput: FC = ({ /> ); case input.type.startsWith('tuple'): - // TODO: implement value prop for TupleInput - return ; + return ( + + ); default: return ( void; + value?: Record; }) => { const getDefaultValueForType = (component: AbiParameter) => { if (component.type.startsWith('bool')) return false; @@ -17,10 +19,13 @@ const TupleInput = ({ if (component.type.startsWith('uint')) return '0'; return ''; }; + // Initialize the tuple state as an object, with keys corresponding to tuple property names const [tupleState, setTupleState] = useState(() => input.components.reduce((acc: any, component: any) => { - acc[component.name] = getDefaultValueForType(component); + // Use value prop if available, otherwise use default value + acc[component.name] = + value?.[component.name] ?? getDefaultValueForType(component); return acc; }, {}) ); @@ -60,6 +65,7 @@ const TupleInput = ({ } updateTupleValue(component.name, value); }} + initialValue={tupleState[component.name]} /> ))} diff --git a/packages/website/src/features/Packages/Interact.tsx b/packages/website/src/features/Packages/Interact.tsx index c99d03ad1..22198e951 100644 --- a/packages/website/src/features/Packages/Interact.tsx +++ b/packages/website/src/features/Packages/Interact.tsx @@ -205,6 +205,7 @@ const Interact: FC = () => {