diff --git a/lib/views/chat/chat_view.dart b/lib/views/chat/chat_view.dart new file mode 100644 index 00000000..aeadb1dc --- /dev/null +++ b/lib/views/chat/chat_view.dart @@ -0,0 +1,63 @@ +import 'package:auto_gpt_flutter_client/models/message_type.dart'; +import 'package:auto_gpt_flutter_client/views/chat/agent_message_tile.dart'; +import 'package:auto_gpt_flutter_client/views/chat/chat_input_field.dart'; +import 'package:auto_gpt_flutter_client/views/chat/user_message_tile.dart'; +import 'package:flutter/material.dart'; +import 'package:auto_gpt_flutter_client/viewmodels/chat_viewmodel.dart'; + +class ChatView extends StatefulWidget { + final ChatViewModel viewModel; + + const ChatView({Key? key, required this.viewModel}) : super(key: key); + + @override + _ChatViewState createState() => _ChatViewState(); +} + +class _ChatViewState extends State { + @override + void initState() { + super.initState(); + + // Schedule the fetchTasks call for after the initial build + WidgetsBinding.instance.addPostFrameCallback((_) { + // TODO: Update to actual task id + widget.viewModel.fetchChatsForTask(1); + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + // Chat messages list + Expanded( + child: ListView.builder( + reverse: true, + itemCount: widget.viewModel.chats.length, + itemBuilder: (context, index) { + final reversedChats = widget.viewModel.chats.reversed.toList(); + final chat = reversedChats[index]; + if (chat.messageType == MessageType.user) { + return UserMessageTile(message: chat.message); + } else { + return AgentMessageTile(message: chat.message); + } + }, + ), + ), + // Input area + Padding( + padding: const EdgeInsets.all(8.0), + child: ChatInputField( + onSendPressed: () { + // TODO: Implement passing the message back up + }, + ), + ), + ], + ), + ); + } +} diff --git a/lib/views/chat_view.dart b/lib/views/chat_view.dart deleted file mode 100644 index cec98c48..00000000 --- a/lib/views/chat_view.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:flutter/material.dart'; - -class ChatView extends StatelessWidget { - const ChatView({super.key}); - - @override - Widget build(BuildContext context) { - return Container( - color: Colors.green, - child: const Center( - child: Text( - 'Chat', - style: TextStyle(fontSize: 24, color: Colors.white), - ), - ), - ); - } -}