Skip to content

Commit 23ca8ba

Browse files
committed
fix: pr comments
1 parent 29a73c8 commit 23ca8ba

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

packages/nextjs/components/scaffold-eth/Contract/WriteOnlyFunctionForm.tsx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useConnectModal } from "@rainbow-me/rainbowkit";
44
import { Abi, AbiFunction } from "abitype";
55
import { Address, TransactionReceipt, encodeFunctionData } from "viem";
66
import { useAccount, useConfig, useWaitForTransactionReceipt, useWriteContract } from "wagmi";
7-
import { DocumentDuplicateIcon } from "@heroicons/react/24/outline";
7+
import { CheckCircleIcon, DocumentDuplicateIcon } from "@heroicons/react/24/outline";
88
import {
99
ContractInput,
1010
IntegerInput,
@@ -16,7 +16,7 @@ import {
1616
} from "~~/components/scaffold-eth";
1717
import { useTransactor } from "~~/hooks/scaffold-eth";
1818
import { useGlobalState } from "~~/services/store/store";
19-
import { notification } from "~~/utils/scaffold-eth";
19+
import { getParsedError, notification } from "~~/utils/scaffold-eth";
2020
import { simulateContractWriteAndNotifyError } from "~~/utils/scaffold-eth/contract";
2121

2222
type WriteOnlyFunctionFormProps = {
@@ -47,6 +47,8 @@ export const WriteOnlyFunctionForm = ({
4747

4848
const wagmiConfig = useConfig();
4949

50+
const [calldataCopied, setCalldataCopied] = useState(false);
51+
5052
const handleWrite = async () => {
5153
if (writeContractAsync) {
5254
try {
@@ -103,10 +105,14 @@ export const WriteOnlyFunctionForm = ({
103105
args: getParsedContractFunctionArgs(form),
104106
});
105107
await navigator.clipboard.writeText(calldata);
106-
notification.success("Calldata copied to clipboard!");
108+
setCalldataCopied(true);
109+
setTimeout(() => {
110+
setCalldataCopied(false);
111+
}, 800);
107112
} catch (e) {
113+
const errorMessage = getParsedError(e);
108114
console.error("Error copying calldata:", e);
109-
notification.error("Failed to copy calldata");
115+
notification.error(errorMessage);
110116
}
111117
};
112118

@@ -143,7 +149,14 @@ export const WriteOnlyFunctionForm = ({
143149
<div className="flex gap-2">
144150
<div className="tooltip tooltip-left" data-tip="Copy Calldata">
145151
<button className="btn btn-ghost btn-sm" onClick={handleCopyCalldata}>
146-
<DocumentDuplicateIcon className="h-5 w-5" />
152+
{calldataCopied ? (
153+
<CheckCircleIcon
154+
className="h-5 w-5 text-xl font-normal text-secondary-content cursor-pointer"
155+
aria-hidden="true"
156+
/>
157+
) : (
158+
<DocumentDuplicateIcon className="h-5 w-5 text-xl font-normal text-secondary-content cursor-pointer" />
159+
)}
147160
</button>
148161
</div>
149162
{connectedAddress ? (

0 commit comments

Comments
 (0)