@@ -40,12 +40,12 @@ public function __construct(string $connection, string $contractAddress)
40
40
* @param array $logs
41
41
* @return array
42
42
*/
43
- public function decodeLogs (array $ logs ): array
43
+ public function decodeLog (array $ log ): array
44
44
{
45
45
$ eventInputs = [];
46
- $ data = Arr::get ($ logs , '0. data ' );
47
- $ topics = array_slice (Arr::get ($ logs , '0. topics ' , []), 1 );
48
- $ topicId = substr (Arr::first (Arr::get ($ logs , '0. topics ' , [])), 2 );
46
+ $ data = Arr::get ($ log , 'data ' );
47
+ $ topics = array_slice (Arr::get ($ log , 'topics ' , []), 1 );
48
+ $ topicId = substr (Arr::first (Arr::get ($ log , 'topics ' , [])), 2 );
49
49
50
50
if (empty ($ topics ) || is_null ($ data ))
51
51
{
@@ -62,11 +62,30 @@ public function decodeLogs(array $logs): array
62
62
{
63
63
$ inputs = Arr::get ($ eventInputs [$ topicId ], 'inputs ' );
64
64
$ parsedEvent = $ this ->decodeEvent ($ inputs , $ topics , $ data );
65
+ $ parsedEvent ['eventName ' ] = $ eventInputs [$ topicId ]['name ' ];
65
66
}
66
67
67
68
return $ parsedEvent ?? [];
68
69
}
69
70
71
+ /**
72
+ * @param array $logs
73
+ * @return array
74
+ */
75
+ public function decodeLogs (array $ logs ): array
76
+ {
77
+ $ parsedEvents = [];
78
+ foreach ($ logs as $ log ) {
79
+ $ decodedLog = $ this ->decodeLog ($ log );
80
+ if (empty ($ decodedLog )) {
81
+ continue ;
82
+ }
83
+ $ parsedEvents [] = $ decodedLog ;
84
+ }
85
+
86
+ return $ parsedEvents ;
87
+ }
88
+
70
89
/**
71
90
* @param array $event
72
91
* @return bool|string
0 commit comments