Skip to content

[P2] Créer IrcMessageDispatcher centralisé #73

Description

@r9r-dev

Description

Actuellement, trois notifiers différents (ircSession, channels, messages) écoutent et traitent la même stream IRC indépendamment, ce qui disperse le traitement.

Fichiers concernés

  • lib/features/connection/providers/irc_session_manager.dart
  • lib/features/channels/providers/channels_provider.dart
  • lib/features/chat/providers/messages_provider.dart

Impact actuel

  • Traitement parallèle et dispersé
  • Difficulté à tracer le flux des messages
  • Risque de race conditions

Solution proposée

Créer lib/core/irc/dispatcher/irc_dispatcher.dart:

class IrcMessageDispatcher {
  void dispatch(IrcMessage message, {
    required ChannelsNotifier channels,
    required MessagesNotifier messages,
    required IrcSessionNotifier session,
  }) {
    switch (message.command) {
      case 'PRIVMSG': messages.handlePrivmsg(message);
      case 'NOTICE': messages.handleNotice(message);
      case 'JOIN': channels.handleJoin(message);
      case 'PART': channels.handlePart(message);
      case 'QUIT': channels.handleQuit(message);
      case 'KICK': channels.handleKick(message);
      case 'MODE': channels.handleMode(message);
      case 'TOPIC': channels.handleTopic(message);
      case 'CAP': session.handleCap(message);
      case 'AUTHENTICATE': session.handleAuthenticate(message);
      // etc.
    }
  }
}

Bénéfices

  • Point unique de dispatch
  • Traçabilité des messages
  • Facilite le debugging

Effort estimé

3 heures

Référence

docs/CODE_REVIEW.md - Section 2.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    refactoringRefactoring architectural

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions