Commit caef19d 1 parent 104c7cf commit caef19d Copy full SHA for caef19d
File tree 2 files changed +38
-15
lines changed
packages/nextjs/components/kiddo-perks/ChildDashboard
2 files changed +38
-15
lines changed Original file line number Diff line number Diff line change
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
+ } ;
Original file line number Diff line number Diff line change
1
+ import { PerkRedeemCard } from "./PerkRedeemCard" ;
1
2
import { usePerksManager } from "~~/hooks/kiddo-perks" ;
2
3
import { useDeployedContractInfo , useScaffoldWriteContract } from "~~/hooks/scaffold-eth" ;
3
4
import { Perk } from "~~/types/kiddoPerks" ;
@@ -36,21 +37,7 @@ export const PerksListGrid = ({ childTokens }: PerksListGridProps) => {
36
37
< h2 className = "text-lg font-semibold mb-4" > Available Perks</ h2 >
37
38
< div className = "grid grid-cols-1 md:grid-cols-2 gap-4" >
38
39
{ 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 } />
54
41
) ) }
55
42
</ div >
56
43
</ section >
You can’t perform that action at this time.
0 commit comments