Skip to content

Instantly share code, notes, and snippets.

@mgild
Created July 22, 2022 16:51
Show Gist options
  • Select an option

  • Save mgild/aed6e7b860e90b80e4c8cc08e9c0a66e to your computer and use it in GitHub Desktop.

Select an option

Save mgild/aed6e7b860e90b80e4c8cc08e9c0a66e to your computer and use it in GitHub Desktop.
class AptosEvent {
constructor(
readonly client: AptosClient,
readonly eventHandlerOwner: HexString,
readonly eventStruct: string,
readonly eventHandlerName: string
) {}
async onTrigger(callback: (e: any) => any) {
// Get the start sequence number in the EVENT STREAM, defaulting to the latest event.
const [{ sequence_number }] = await this.client.getEventsByEventHandle(
this.eventHandlerOwner,
this.eventStruct,
this.eventHandlerName,
{ limit: 1 }
);
// type for this is string for some reason
let lastSequenceNumber = sequence_number;
setInterval(async () => {
const events = await this.client.getEventsByEventHandle(
this.eventHandlerOwner,
this.eventStruct,
this.eventHandlerName,
{
start: Number(lastSequenceNumber) + 1,
}
);
for (let e of events) {
// increment sequence number
lastSequenceNumber = e.sequence_number;
// fire off the callback for all new events
await callback(e);
}
}, 1000);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment