Skip to content

[P2] Refactoriser MessagesNotifier (violation SRP) #76

Description

@r9r-dev

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

  1. Gestion état messages
  2. Parsing IRC messages
  3. Persistance base de données
  4. Gestion écho messages
  5. Gestion PRIVMSG, NOTICE
  6. Gestion JOIN, PART, QUIT, KICK, TOPIC
  7. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    refactoringRefactoring architectural

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions