1
+ import { useEffect , useState } from "react" ;
1
2
import Image from "next/image" ;
3
+ import { useChildManager , usePerksManager } from "~~/hooks/kiddo-perks" ;
4
+ import { useScaffoldEventHistory } from "~~/hooks/scaffold-eth" ;
2
5
import { Activity } from "~~/types/kiddoPerks" ;
3
6
4
- type RecentActivitySummaryProps = {
5
- activities : Activity [ ] ;
6
- } ;
7
+ export const RecentActivitySummary = ( ) => {
8
+ const [ activities , setActivities ] = useState < Activity [ ] > ( [ ] ) ;
9
+
10
+ const { perks } = usePerksManager ( ) ;
11
+ const { children } = useChildManager ( ) ;
12
+
13
+ const { data : perkRedeemedEvents } = useScaffoldEventHistory ( {
14
+ contractName : "KiddoPerks" ,
15
+ eventName : "PerkRedeemed" ,
16
+ fromBlock : 0n ,
17
+ watch : true ,
18
+ blockData : true ,
19
+ transactionData : true ,
20
+ receiptData : true ,
21
+ } ) ;
22
+
23
+ const { data : tokenMintedEvents } = useScaffoldEventHistory ( {
24
+ contractName : "KiddoPerks" ,
25
+ eventName : "TaskCompleted" ,
26
+ fromBlock : 0n ,
27
+ watch : true ,
28
+ blockData : true ,
29
+ transactionData : true ,
30
+ receiptData : true ,
31
+ } ) ;
32
+
33
+ useEffect ( ( ) => {
34
+ const perkRedeemedActivities = ( perkRedeemedEvents || [ ] ) . map ( event => ( {
35
+ id : event . transaction ?. transactionHash ,
36
+ title : `Perk ${ perks . find ( perk => perk . id === Number ( event . args . perkId ) ) ?. title } redeemed by ${
37
+ children . find ( child => child . address === event . args . by ) ?. name
38
+ } `,
39
+ // @ts -ignore
40
+ blockNumber : Number ( event . blockNumber ) ,
41
+ } ) ) ;
42
+
43
+ const tokenMintedActivities = ( tokenMintedEvents || [ ] ) . map ( event => ( {
44
+ id : event . transaction ?. transactionHash , // Si tienes un identificador único en el evento, úsalo aquí
45
+ title : `Task ${ event . args . title } was completed by ${
46
+ children . find ( child => child . address === event . args . by ) ?. name
47
+ } `,
48
+ // @ts -ignore
49
+ blockNumber : Number ( event . blockNumber ) ,
50
+ } ) ) ;
51
+
52
+ setActivities ( [ ...perkRedeemedActivities , ...tokenMintedActivities ] . sort ( ( a , b ) => a . blockNumber + b . blockNumber ) ) ;
53
+ } , [ perkRedeemedEvents , tokenMintedEvents ] ) ;
7
54
8
- export const RecentActivitySummary = ( { activities } : RecentActivitySummaryProps ) => {
9
55
return (
10
56
< section className = "mt-6" >
11
57
< h2 className = "text-lg font-semibold mb-4" > Recent Activity Summary</ h2 >
@@ -22,7 +68,7 @@ export const RecentActivitySummary = ({ activities }: RecentActivitySummaryProps
22
68
23
69
< div className = "ml-4" >
24
70
< p className = "text-sm " > { activity . title } </ p >
25
- < p className = "text-xs mt-1" > 2 hours ago </ p >
71
+ < p > { activity . blockNumber } </ p >
26
72
</ div >
27
73
</ li >
28
74
) ) }
0 commit comments