1
0

use-reserve-token.tsx 895 B

1234567891011121314151617181920212223242526272829303132
  1. import { useWaitForTransactionReceipt, useWriteContract } from 'wagmi';
  2. import { parseEther } from "viem";
  3. import { ERC721_ABI } from "@/utils/abi/erc721";
  4. export function useReserveToken() {
  5. const { data: hash, isPending, writeContract, error: writeError } = useWriteContract();
  6. const {
  7. isLoading: isConfirming,
  8. isSuccess: isConfirmed,
  9. error: confirmError,
  10. data: receipt
  11. } = useWaitForTransactionReceipt({
  12. hash
  13. });
  14. const reserve = (tokenId: number, amountEth: string) => {
  15. const amount = parseEther(amountEth);
  16. writeContract({
  17. address: process.env.NEXT_PUBLIC_CONTRACT_ADDRESS! as `0x${string}`,
  18. abi: ERC721_ABI,
  19. functionName: "reserveTokens",
  20. args: [tokenId, amount],
  21. });
  22. };
  23. return {
  24. write: reserve,
  25. isLoading: isPending || isConfirming,
  26. isSuccess: isConfirmed,
  27. error: writeError || confirmError,
  28. };
  29. }