Skip to content

Commit

Permalink
add scaffold
Browse files Browse the repository at this point in the history
  • Loading branch information
aki-0517 committed Dec 5, 2024
1 parent 487e711 commit 580fa89
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 0 deletions.
27 changes: 27 additions & 0 deletions packages/nextjs/hooks/scaffold-eth/useERC721List.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use client';

import { useScaffoldReadContract } from './useScaffoldReadContract';
import { BigNumber } from 'ethers';

interface Voucher {
title: string;
issueDate: BigNumber;
amount: BigNumber;
expiryDate: BigNumber;
usageScope: string;
}

export const useERC721List = ( ownerAddress: string) => {

// Fetch the list of vouchers owned by the specified address
const { data: vouchers } = useScaffoldReadContract({
contractName: "ExpirableERC721",
functionName: "listVouchers",
args: [ownerAddress],
});


return {
vouchers: vouchers as Voucher[] | undefined,
};
};
44 changes: 44 additions & 0 deletions packages/nextjs/hooks/scaffold-eth/useERC721Mintbatch.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { useState } from "react";
import { useScaffoldWriteContract } from "~~/hooks/scaffold-eth";

/**
* Custom hook to interact with the mintBatch function of the ExpirableERC721 contract.
*/
export const useERC721MintBatch = () => {
const [isMinting, setIsMinting] = useState(false);
const { writeContractAsync } = useScaffoldWriteContract("ExpirableERC721");

/**
* Function to mint a batch of ERC721 tokens.
* @param to Address to mint the tokens to.
* @param numberOfTokens Number of tokens to mint.
* @param title Title of the voucher.
* @param issueDate Issue date of the voucher.
* @param amount Amount associated with the voucher.
* @param expiryDate Expiry date of the voucher.
* @param usageScope Usage scope of the voucher.
*/
const mintBatch = async (
to: string,
numberOfTokens: bigint,
title: string,
issueDate: bigint,
amount: bigint,
expiryDate: bigint,
usageScope: string
) => {
setIsMinting(true);
try {
await writeContractAsync({
functionName: "mintBatch",
args: [to, numberOfTokens, title, issueDate, amount, expiryDate, usageScope],
});
} catch (error) {
console.error("Error minting batch:", error);
} finally {
setIsMinting(false);
}
};

return { mintBatch, isMinting };
};

0 comments on commit 580fa89

Please sign in to comment.