handleEvent method

  1. @override
void handleEvent(
  1. ChatEvent event, {
  2. String? currentUserId,
})
override

Handles incoming event from adapter.

Implementation

@override
void handleEvent(ChatEvent event, {String? currentUserId}) {
  ChatLogger.debug('Handling event: ${event.runtimeType}');

  // Handle different event types
  if (event is MessageEvent) {
    _handleMessageEvent(event, currentUserId: currentUserId)
        .catchError((Object e, StackTrace s) {
      ChatLogger.error('Failed to handle message event', e, s);
    });
  } else if (event is ConversationUpdateEvent) {
    _handleConversationUpdateEvent(event, currentUserId: currentUserId)
        .catchError((Object e, StackTrace s) {
      ChatLogger.error('Failed to handle conversation update event', e, s);
    });
  } else if (event is ReactionEvent) {
    // Fire and forget - errors are logged internally
    _handleReactionEvent(event).catchError((Object e, StackTrace s) {
      ChatLogger.error('Failed to handle reaction event', e, s);
    });
  } else if (event is ReceiptEvent) {
    _handleReceiptEvent(event, currentUserId: currentUserId)
        .catchError((Object e, StackTrace s) {
      ChatLogger.error('Failed to handle receipt event', e, s);
    });
  } else if (event is PinEvent) {
    _handlePinEvent(event, currentUserId: currentUserId)
        .catchError((Object e, StackTrace s) {
      ChatLogger.error('Failed to handle pin event', e, s);
    });
  } else if (event is TypingEvent) {
    // Typing events are transient, don't persist
    _eventBus.emit(event);
  } else {
    // Other events (presence, etc.) just broadcast
    _eventBus.emit(event);
  }
}