Skip to content

Commit 156d7b9

Browse files
Merge pull request #250 from hakumai-iida/248_fix_event_filterling_parameters
#248
2 parents 2cb866b + 5fcf236 commit 156d7b9

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

Sources/web3swift/Contract/EventFiltering.swift

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,32 @@ internal func encodeTopicToGetLogs(contract: EthereumContract, eventName: String
7474
}
7575
if filter.parameterFilters != nil {
7676
if event == nil {return nil}
77-
var lastNonemptyFilter = 0
77+
var lastNonemptyFilter = -1
7878
for i in 0 ..< filter.parameterFilters!.count {
7979
let filterValue = filter.parameterFilters![i]
8080
if filterValue != nil {
8181
lastNonemptyFilter = i
8282
}
8383
}
84-
if lastNonemptyFilter != 0 {
84+
if lastNonemptyFilter >= 0 {
8585
guard lastNonemptyFilter <= event!.inputs.count else {return nil}
8686
for i in 0 ... lastNonemptyFilter {
8787
let filterValues = filter.parameterFilters![i]
88-
let input = event!.inputs[i]
89-
if filterValues != nil && !input.indexed {return nil}
88+
if filterValues != nil {
89+
var isFound = false
90+
var targetIndexedPosition = i
91+
for j in 0 ..< event!.inputs.count{
92+
if event!.inputs[j].indexed {
93+
if targetIndexedPosition == 0 {
94+
isFound = true
95+
break
96+
}
97+
targetIndexedPosition -= 1
98+
}
99+
}
100+
101+
if !isFound {return nil}
102+
}
90103
if filterValues == nil {
91104
topics.append(nil as [String?]?)
92105
continue

0 commit comments

Comments
 (0)