handleEvent method
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);
}
}