/// Événements du BLoC Messagerie v4 library messaging_event; import 'package:equatable/equatable.dart'; abstract class MessagingEvent extends Equatable { const MessagingEvent(); @override List get props => []; } // ── Conversations ───────────────────────────────────────────────────────────── /// Charger la liste des conversations class LoadMesConversations extends MessagingEvent { const LoadMesConversations(); } /// Ouvrir une conversation (charge le détail) class OpenConversation extends MessagingEvent { final String conversationId; const OpenConversation(this.conversationId); @override List get props => [conversationId]; } /// Démarrer une conversation directe avec un membre class DemarrerConversationDirecte extends MessagingEvent { final String destinataireId; final String organisationId; final String? premierMessage; const DemarrerConversationDirecte({ required this.destinataireId, required this.organisationId, this.premierMessage, }); @override List get props => [destinataireId, organisationId, premierMessage]; } /// Démarrer un canal de communication avec un rôle class DemarrerConversationRole extends MessagingEvent { final String roleCible; final String organisationId; final String? premierMessage; const DemarrerConversationRole({ required this.roleCible, required this.organisationId, this.premierMessage, }); @override List get props => [roleCible, organisationId, premierMessage]; } /// Archiver une conversation class ArchiverConversation extends MessagingEvent { final String conversationId; const ArchiverConversation(this.conversationId); @override List get props => [conversationId]; } // ── Messages ────────────────────────────────────────────────────────────────── /// Envoyer un message texte class EnvoyerMessageTexte extends MessagingEvent { final String conversationId; final String contenu; final String? messageParentId; const EnvoyerMessageTexte({ required this.conversationId, required this.contenu, this.messageParentId, }); @override List get props => [conversationId, contenu, messageParentId]; } /// Charger l'historique des messages class LoadMessages extends MessagingEvent { final String conversationId; final int page; const LoadMessages({required this.conversationId, this.page = 0}); @override List get props => [conversationId, page]; } /// Marquer une conversation comme lue class MarquerLu extends MessagingEvent { final String conversationId; const MarquerLu(this.conversationId); @override List get props => [conversationId]; } /// Supprimer un message class SupprimerMessage extends MessagingEvent { final String conversationId; final String messageId; const SupprimerMessage({ required this.conversationId, required this.messageId, }); @override List get props => [conversationId, messageId]; } // ── Temps réel WebSocket ─────────────────────────────────────────────────────── /// Nouveau message reçu via WebSocket class NouveauMessageWebSocket extends MessagingEvent { final String conversationId; const NouveauMessageWebSocket(this.conversationId); @override List get props => [conversationId]; }