aboutsummaryrefslogtreecommitdiff
path: root/frontend/lib/models/task.dart
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/lib/models/task.dart')
-rw-r--r--frontend/lib/models/task.dart67
1 files changed, 67 insertions, 0 deletions
diff --git a/frontend/lib/models/task.dart b/frontend/lib/models/task.dart
new file mode 100644
index 000000000..a7325f7de
--- /dev/null
+++ b/frontend/lib/models/task.dart
@@ -0,0 +1,67 @@
+/// Represents a task or topic the user wants to discuss with the agent.
+class Task {
+ final String id;
+ final Map<String, dynamic>? additionalInput;
+ final List<String>? artifacts;
+
+ String _title;
+
+ Task({
+ required this.id,
+ this.additionalInput,
+ this.artifacts,
+ required String title,
+ }) : assert(title.isNotEmpty, 'Title cannot be empty'),
+ _title = title;
+
+ String get title => _title;
+
+ set title(String newTitle) {
+ if (newTitle.isNotEmpty) {
+ _title = newTitle;
+ } else {
+ throw ArgumentError('Title cannot be empty.');
+ }
+ }
+
+// Convert a Map (usually from JSON) to a Task object
+ factory Task.fromMap(Map<String, dynamic> map) {
+ Map<String, dynamic>? additionalInput;
+ List<String>? artifacts;
+
+ if (map['additional_input'] != null) {
+ additionalInput = Map<String, dynamic>.from(map['additional_input']);
+ }
+
+ if (map['artifacts'] != null) {
+ artifacts = List<String>.from(map['artifacts'].map((e) => e.toString()));
+ }
+
+ return Task(
+ id: map['task_id'],
+ additionalInput: additionalInput,
+ artifacts: artifacts,
+ title: map['input'],
+ );
+ }
+
+ Map<String, dynamic> toJson() {
+ return {
+ 'task_id': id,
+ 'input': title,
+ 'additional_input': additionalInput,
+ 'artifacts': artifacts,
+ };
+ }
+
+ @override
+ bool operator ==(Object other) =>
+ identical(this, other) ||
+ other is Task && runtimeType == other.runtimeType && id == other.id;
+
+ @override
+ int get hashCode => id.hashCode ^ title.hashCode;
+
+ @override
+ String toString() => 'Task(id: $id, title: $title)';
+}