broxus / everscale-inpage-provider

Web3-like interface to the Everscale blockchain.
https://broxus.github.io/everscale-inpage-provider/
GNU General Public License v3.0
30 stars 17 forks source link

Events methods #1

Closed 30mb1 closed 2 years ago

30mb1 commented 2 years ago

Added handy web3-like methods for working with events:

  1. Method for getting first found event on contract that satisfy some filter. Lets say user made a deposit in farming pool and right after that we want to catch some event indicating call success. At the moment we need to create stream with old txs + stream with new txs, merge them, than decode all txns to get events and check all events. New method do all the job internally, so you need only 1 call:
    const event = contract.waitForEvent({
    filter: {name: 'Deposit', params: {user: 'user_addr'}}, // optional. If set, params could be omitted
    options: {fromLt: '123123123'} // optional
    })
  2. Method for getting past events that satisfy some filter or one of several filters. This can help build some 'history' pages for contracts. If your application is completely client-side and doesn't have special indexer you can fetch contract events page by page with this method. Example - get Withdraw events for certain user + all Claim events, limited by 20:
    const {events, offset} = contract.getPastEvents({
    filters: [{name: 'Withdraw', params: {user: 'user_addr'}}, {name: 'Claim'}], // optional
    limit: 20 // optional, returns all events if omitted
    })
    // now get second page
    const {more_events, offset2} = contract.getPastEvents({
    filters: [{name: 'Withdraw', params: {user: 'user_addr'}}, {name: 'Claim'}], // same as for the 1st call
    limit: 20,
    offset: offset
    })