Advanced chat management via UI

This commit is contained in:
Shivering Ocelot committed 2025-05-22 07:48:36 -05:00
1 parent fbee31841d
commit 5351144edf
9 files changed
+396 -59

No files matched your search

+6 -3
View File
@@ -33,6 +33,7 @@ class ChatScreen extends StatefulWidget {
}
class _ChatScreenState extends State<ChatScreen> {
String? _title;
List<Message> _messages = [];
final TextEditingController _textController = TextEditingController();
StreamSubscription? _chatSubscription;
@@ -40,7 +41,7 @@ class _ChatScreenState extends State<ChatScreen> {
@override
void initState() {
super.initState();
_loadInitialMessages();
_loadInitialData();
_chatSubscription = Backend.chatMessages(widget.chatId).listen((data) {
final message = Message(sender: data['sender'], text: data['content']);
if (!message.isFromUser) {
@@ -55,10 +56,12 @@ class _ChatScreenState extends State<ChatScreen> {
super.dispose();
}
Future<void> _loadInitialMessages() async {
Future<void> _loadInitialData() async {
final chatInfo = (await Backend.getChat(widget.chatId))!;
final initialMessages = await ChatScreen.getChatMessages(widget.chatId);
setState(() {
_messages.addAll(initialMessages);
_title = chatInfo.name;
});
}
@@ -100,7 +103,7 @@ class _ChatScreenState extends State<ChatScreen> {
return Scaffold(
appBar: AppBar(
title: Text('Chat Room ${widget.chatId}'),
title: Text(_title ?? 'Chat Room ${widget.chatId}'),
actions: [
IconButton(icon: Icon(Icons.settings), onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (_) => AppMenu()));