Description
MessagesNotifier a 698 lignes et 7 responsabilités différentes, violant le Single Responsibility Principle.
Fichier concerné
lib/features/chat/providers/messages_provider.dart
Responsabilités actuelles
- Gestion état messages
- Parsing IRC messages
- Persistance base de données
- Gestion écho messages
- Gestion PRIVMSG, NOTICE
- Gestion JOIN, PART, QUIT, KICK, TOPIC
- Buffer en mémoire + pagination
Solution proposée
Split en 3 classes:
1. MessageHandler (parsing et conversion)
// lib/features/chat/services/message_handler.dart
class MessageHandler {
ChatMessage handlePrivmsg(IrcMessage message) { }
ChatMessage handleNotice(IrcMessage message) { }
ChatMessage handleEvent(IrcMessage message) { }
}
2. MessagePersister (base de données)
// lib/features/chat/services/message_persister.dart
class MessagePersister {
Future<void> persist(ChatMessage message) { }
Future<List<ChatMessage>> loadHistory(String channel, {int limit, int offset}) { }
Future<void> cleanup(Duration retention) { }
}
3. MessagesNotifier (coordination)
// lib/features/chat/providers/messages_notifier.dart
class MessagesNotifier extends Notifier<MessagesState> {
// Coordination seulement, délègue aux services
}
Bénéfices
- Classes testables indépendamment
- Responsabilités claires
- Code plus maintenable
Effort estimé
4 heures
Référence
docs/CODE_REVIEW.md - Section 4.4
Description
MessagesNotifiera 698 lignes et 7 responsabilités différentes, violant le Single Responsibility Principle.Fichier concerné
lib/features/chat/providers/messages_provider.dartResponsabilités actuelles
Solution proposée
Split en 3 classes:
1. MessageHandler (parsing et conversion)
2. MessagePersister (base de données)
3. MessagesNotifier (coordination)
Bénéfices
Effort estimé
4 heures
Référence
docs/CODE_REVIEW.md - Section 4.4