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
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.dartlib/features/channels/providers/channels_provider.dartlib/features/chat/providers/messages_provider.dartImpact actuel
Solution proposée
Créer
lib/core/irc/dispatcher/irc_dispatcher.dart:Bénéfices
Effort estimé
3 heures
Référence
docs/CODE_REVIEW.md - Section 2.1