Skip to content

Commit caef19d

Browse files
committed
Children can redeem nowgit add .! :)
1 parent 104c7cf commit caef19d

File tree

2 files changed

+38
-15
lines changed

2 files changed

+38
-15
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { useAccount } from "wagmi";
2+
import { useScaffoldReadContract } from "~~/hooks/scaffold-eth";
3+
import { Perk } from "~~/types/kiddoPerks";
4+
5+
type PerkRedeemCardProps = {
6+
perk: Perk;
7+
childTokens: number;
8+
handleRedeemPerk: (perk: Perk) => void;
9+
};
10+
11+
export const PerkRedeemCard = ({ perk, childTokens, handleRedeemPerk }: PerkRedeemCardProps) => {
12+
const account = useAccount();
13+
const { data: isRedeemed } = useScaffoldReadContract({
14+
contractName: "KiddoPerks",
15+
functionName: "s_perksRedeemedBy",
16+
args: [BigInt(perk.id), account.address],
17+
});
18+
19+
return (
20+
<div key={perk.id} className="bg-secondary shadow-md rounded-lg p-4 flex justify-between items-center">
21+
<div>
22+
<h3 className="text-sm font-medium ">{perk.title}</h3>
23+
<p className="text-xs text-gray-600">Cost: {Number(perk.tokensRequired) / 10 ** 18} KDO</p>
24+
</div>
25+
{isRedeemed ? (
26+
<span className="text-xs bg-base px-2 py-1 rounded-full">Redeemed</span>
27+
) : childTokens >= Number(perk.tokensRequired) ? (
28+
<button onClick={() => handleRedeemPerk(perk)} className="btn btn-primary">
29+
Redeem
30+
</button>
31+
) : (
32+
<span className="text-xs bg-accent text-accent-content px-2 py-1 rounded-full">Not Enough Points</span>
33+
)}
34+
</div>
35+
);
36+
};

packages/nextjs/components/kiddo-perks/ChildDashboard/PerksListGrid.tsx

+2-15
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { PerkRedeemCard } from "./PerkRedeemCard";
12
import { usePerksManager } from "~~/hooks/kiddo-perks";
23
import { useDeployedContractInfo, useScaffoldWriteContract } from "~~/hooks/scaffold-eth";
34
import { Perk } from "~~/types/kiddoPerks";
@@ -36,21 +37,7 @@ export const PerksListGrid = ({ childTokens }: PerksListGridProps) => {
3637
<h2 className="text-lg font-semibold mb-4">Available Perks</h2>
3738
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
3839
{perks.map(perk => (
39-
<div key={perk.id} className="bg-secondary shadow-md rounded-lg p-4 flex justify-between items-center">
40-
<div>
41-
<h3 className="text-sm font-medium ">{perk.title}</h3>
42-
<p className="text-xs text-gray-600">Cost: {Number(perk.tokensRequired) / 10 ** 18} KDO</p>
43-
</div>
44-
{perk.isRedeemed ? (
45-
<span className="text-xs bg-base px-2 py-1 rounded-full">Redeemed</span>
46-
) : childTokens >= Number(perk.tokensRequired) ? (
47-
<button onClick={() => handleRedeemPerk(perk)} className="btn btn-primary">
48-
Redeem
49-
</button>
50-
) : (
51-
<span className="text-xs bg-accent text-accent-content px-2 py-1 rounded-full">Not Enough Points</span>
52-
)}
53-
</div>
40+
<PerkRedeemCard key={perk.id} perk={perk} childTokens={childTokens} handleRedeemPerk={handleRedeemPerk} />
5441
))}
5542
</div>
5643
</section>

0 commit comments

Comments
 (0)