Skip to content

Commit

Permalink
Merge pull request #82 from Cerebellum-Network/feature/pass-block-to-…
Browse files Browse the repository at this point in the history
…events-listener

Pass block hash and number to events listener
  • Loading branch information
khssnv committed Mar 14, 2024
2 parents 098b39c + d77d31a commit 6c6ffd6
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions blockchain/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/cerebellum-network/cere-ddc-sdk-go/blockchain/pallets"
)

type EventsListener func(*pallets.Events)
type EventsListener func(events *pallets.Events, blockNumber types.BlockNumber, blockHash types.Hash)

type Client struct {
*gsrpc.SubstrateAPI
Expand Down Expand Up @@ -77,6 +77,12 @@ func (c *Client) StartEventsListening() (func(), <-chan error, error) {
case <-done:
return
case set := <-sub.Chan():
header, err := c.RPC.Chain.GetHeader(set.Block)
if err != nil {
c.errsListening <- fmt.Errorf("get header: %w", err)
continue
}

for _, change := range set.Changes {
if !codec.Eq(change.StorageKey, key) || !change.HasStorageData {
continue
Expand All @@ -86,10 +92,11 @@ func (c *Client) StartEventsListening() (func(), <-chan error, error) {
err = types.EventRecordsRaw(change.StorageData).DecodeEventRecords(meta, events)
if err != nil {
c.errsListening <- fmt.Errorf("events decoder: %w", err)
continue
}

for _, callback := range c.eventsListeners {
go callback(events)
go callback(events, header.Number, set.Block)
}
}
}
Expand Down

0 comments on commit 6c6ffd6

Please sign in to comment.