diff --git a/lib/views/chat/chat_view.dart b/lib/views/chat/chat_view.dart index 4efb819e..cee0746f 100644 --- a/lib/views/chat/chat_view.dart +++ b/lib/views/chat/chat_view.dart @@ -1,9 +1,13 @@ import 'package:auto_gpt_flutter_client/models/message_type.dart'; +import 'package:auto_gpt_flutter_client/viewmodels/task_viewmodel.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'; +import 'package:provider/provider.dart'; + +// TODO: Implement artifacts class ChatView extends StatefulWidget { final ChatViewModel viewModel; @@ -21,13 +25,14 @@ class _ChatViewState extends State { // Schedule the fetchTasks call for after the initial build WidgetsBinding.instance.addPostFrameCallback((_) { - // TODO: Update to actual task id - widget.viewModel.fetchChatsForTask(1); + widget.viewModel.fetchChatsForTask(); }); } @override Widget build(BuildContext context) { + // TODO: Do we want to have a reference to task view model in this class? + final taskViewModel = Provider.of(context, listen: false); return Scaffold( body: Column( children: [ @@ -49,8 +54,14 @@ class _ChatViewState extends State { Padding( padding: const EdgeInsets.all(8.0), child: ChatInputField( - onSendPressed: () { - // TODO: Implement passing the message back up + onSendPressed: (message) async { + if (widget.viewModel.currentTaskId != null) { + widget.viewModel.sendChatMessage(message); + } else { + String newTaskId = await taskViewModel.createTask(message); + widget.viewModel.setCurrentTaskId(newTaskId); + widget.viewModel.sendChatMessage(message); + } }, ), ),