events property

Stream<DispatchEvent> events
latefinal

A stream of dispatch events received from all shards.

Implementation

// Make this late instead of a getter so only a single subscription is made, which prevents events from being parsed multiple times.
late final Stream<DispatchEvent> events = messages.transform(StreamTransformer.fromBind((messages) async* {
  await for (final message in messages) {
    if (message is! EventReceived) continue;

    final event = message.event;
    if (event is! RawDispatchEvent) continue;

    final parsedEvent = parseDispatchEvent(event);
    // Update the cache as needed.
    client.updateCacheWith(parsedEvent);
    yield parsedEvent;
  }
})).asBroadcastStream();