diff --git a/packages/nextjs/app/user/list/page.tsx b/packages/nextjs/app/user/list/page.tsx
index 8336700..effee4a 100644
--- a/packages/nextjs/app/user/list/page.tsx
+++ b/packages/nextjs/app/user/list/page.tsx
@@ -1,37 +1,25 @@
-import type { NextPage } from "next";
-import { CardList } from "~~/components/CardList";
+'use client';
+
+import type { NextPage } from 'next';
+import { useAccount } from 'wagmi';
+import { CardList } from '~~/components/CardList';
+import { useERC721List } from '~~/hooks/scaffold-eth/useERC721List';
const UserListPage: NextPage = () => {
- const cards = [
- {
- title: "引換券",
- issueDate: "2024.12.05",
- amount: 7000,
- expiryDate: "2025.06.30",
- usageScope: "店舗全体",
- },
- {
- title: "引換券",
- issueDate: "2024.12.05",
- amount: 7000,
- expiryDate: "2025.06.30",
- usageScope: "店舗全体",
- },
- {
- title: "引換券",
- issueDate: "2024.12.05",
- amount: 7000,
- expiryDate: "2025.06.30",
- usageScope: "店舗全体",
- },
- {
- title: "引換券",
- issueDate: "2024.12.05",
- amount: 7000,
- expiryDate: "2025.06.30",
- usageScope: "店舗全体",
- },
- ];
+ const { address } = useAccount();
+ const { vouchers } = useERC721List(address || '');
+
+ const cards = vouchers?.map((voucher) => {
+ const amount = voucher.amount;
+ return {
+ title: voucher.title,
+ issueDate: voucher.issueDate.toString(),
+ amount: Number(amount),
+ expiryDate: voucher.expiryDate.toString(),
+ usageScope: voucher.usageScope,
+ };
+ }) || [];
+
return ;
};
diff --git a/packages/nextjs/components/Header.tsx b/packages/nextjs/components/Header.tsx
index 91b2765..6b27ce3 100644
--- a/packages/nextjs/components/Header.tsx
+++ b/packages/nextjs/components/Header.tsx
@@ -90,17 +90,10 @@ export const Header = () => {
)}
-
+
-
- Scaffold-ETH
- Ethereum dev stack
-
- {/*
*/}
diff --git a/packages/nextjs/hooks/scaffold-eth/useERC721List.ts b/packages/nextjs/hooks/scaffold-eth/useERC721List.ts
new file mode 100644
index 0000000..5ee1f2f
--- /dev/null
+++ b/packages/nextjs/hooks/scaffold-eth/useERC721List.ts
@@ -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,
+ };
+};
diff --git a/packages/nextjs/hooks/scaffold-eth/useERC721Mintbatch.ts b/packages/nextjs/hooks/scaffold-eth/useERC721Mintbatch.ts
new file mode 100644
index 0000000..68f926f
--- /dev/null
+++ b/packages/nextjs/hooks/scaffold-eth/useERC721Mintbatch.ts
@@ -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 };
+};
diff --git a/packages/nextjs/public/logo.svg b/packages/nextjs/public/logo.svg
index 93e4b40..7521d84 100644
--- a/packages/nextjs/public/logo.svg
+++ b/packages/nextjs/public/logo.svg
@@ -1,10 +1,26 @@
-