import 'package:flutter/material.dart'; import 'services/chat_service.dart'; import 'pages/rooms_page.dart'; import 'pages/chat_page.dart'; /// Module de chat autonome avec gestion des rôles /// /// Les permissions sont gérées via le fichier chat_config.yaml class ChatModule { /// Initialiser le module chat avec support des rôles /// /// @param apiUrl URL de base de l'API /// @param userId ID de l'utilisateur connecté /// @param userName Nom de l'utilisateur /// @param userRole Rôle de l'utilisateur (1: membre, 2: admin amicale, 9: superadmin) /// @param userEntite ID de l'entité/amicale de l'utilisateur (optionnel) /// @param authToken Token JWT d'authentification (optionnel) static Future init({ required String apiUrl, required int userId, required String userName, required int userRole, int? userEntite, String? authToken, }) async { await ChatService.init( apiUrl: apiUrl, userId: userId, userName: userName, userRole: userRole, userEntite: userEntite, authToken: authToken, ); } /// Obtenir la page de liste des conversations static Widget getRoomsPage() => const RoomsPage(); /// Obtenir la page de chat pour une room spécifique static Widget getChatPage(String roomId, String roomTitle) => ChatPage( roomId: roomId, roomTitle: roomTitle, ); /// Naviguer vers le chat depuis n'importe où static void openChat(BuildContext context) { Navigator.of(context).push( MaterialPageRoute( builder: (_) => const RoomsPage(), ), ); } /// Nettoyer les ressources static void dispose() { ChatService.instance.dispose(); } }