diff --git a/apps/dashboard/src/@/components/blocks/wallet-address.tsx b/apps/dashboard/src/@/components/blocks/wallet-address.tsx index 94c90837c8d..b4c6e284752 100644 --- a/apps/dashboard/src/@/components/blocks/wallet-address.tsx +++ b/apps/dashboard/src/@/components/blocks/wallet-address.tsx @@ -23,7 +23,6 @@ export function WalletAddress(props: { className?: string; iconClassName?: string; client: ThirdwebClient; - preventOpenOnFocus?: boolean; }) { // default back to zero address if no address provided const address = useMemo(() => props.address || ZERO_ADDRESS, [props.address]); @@ -68,10 +67,7 @@ export function WalletAddress(props: { return ( - + - {disclosure.isOpen && ( - - )} + + + + + ); -}; - -export interface AddModalInput { - chainId: number; - backendWalletAddress: string; - name?: string; - allowedContractsRaw: string; - allowedForwardersRaw: string; } -const AddModal = ({ +function AddModalContent({ instanceUrl, - disclosure, + setIsOpen, authToken, client, }: { instanceUrl: string; - disclosure: UseDisclosureReturn; + isOpen: boolean; + setIsOpen: (open: boolean) => void; authToken: string; client: ThirdwebClient; -}) => { - const { mutate: createRelayer } = useEngineCreateRelayer({ +}) { + const { idToChain } = useAllChainsData(); + const createRelayer = useEngineCreateRelayer({ authToken, instanceUrl, }); @@ -94,121 +107,182 @@ const AddModal = ({ authToken, instanceUrl, }); - const { idToChain } = useAllChainsData(); - const { onSuccess, onError } = useTxNotifications( - "Relayer created successfully.", - "Failed to create relayer.", - ); - const form = useForm({ + const form = useForm({ + resolver: zodResolver(addRelayerFormSchema), defaultValues: { chainId: 11155111, // sepolia chain id }, }); - const onSubmit = (data: AddModalInput) => { + const onSubmit = (data: AddRelayerFormData) => { const createRelayerData: CreateRelayerInput = { - allowedContracts: parseAddressListRaw(data.allowedContractsRaw), - allowedForwarders: parseAddressListRaw(data.allowedForwardersRaw), + allowedContracts: data.allowedContractsRaw + ? parseAddressListRaw(data.allowedContractsRaw) + : undefined, + allowedForwarders: data.allowedForwardersRaw + ? parseAddressListRaw(data.allowedForwardersRaw) + : undefined, backendWalletAddress: data.backendWalletAddress, chain: idToChain.get(data.chainId)?.slug ?? "unknown", name: data.name, }; - createRelayer(createRelayerData, { + createRelayer.mutate(createRelayerData, { onError: (error) => { - onError(error); + toast.error("Failed to create relayer", { + description: parseError(error), + }); console.error(error); }, onSuccess: () => { - onSuccess(); - disclosure.onClose(); + toast.success("Relayer created successfully"); + setIsOpen(false); }, }); }; return ( - - - - Add Relayer - - - - - - Chain - form.setValue("chainId", val)} +
+
+ +
+ + Add Relayer + + +
+ ( + + Chain + + field.onChange(val)} + /> + + + + )} + /> + + ( + + Backend Wallet + + + + + + )} /> - - - Backend Wallet - - - - Label - ( + + Label + + + + + + )} /> - - - Allowed Contracts -