// Version: 1.0.0 | Created: 2026-04-01 // Riverpod providers for chat timeline. import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../data/chat_repository.dart'; import '../domain/message_model.dart'; part 'chat_controller.g.dart'; /// Streams the message list for [roomId]. @riverpod Stream> chatTimeline(Ref ref, String roomId) { final repo = ref.watch(chatRepositoryProvider); return repo.watchTimeline(roomId); } /// Sends a text message. Returns an error string on failure, null on success. @riverpod class SendMessage extends _$SendMessage { @override bool build() => false; // isSending Future send(String roomId, String text) async { if (text.trim().isEmpty) return null; state = true; try { await ref.read(chatRepositoryProvider).sendTextMessage(roomId, text); return null; } on Exception catch (e) { return e.toString(); } finally { state = false; } } }