File size: 1,935 Bytes
b225a21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import 'package:auto_gpt_flutter_client/models/artifact.dart';
import 'package:auto_gpt_flutter_client/models/message_type.dart';

/// Represents a chat message related to a specific task.
class Chat {
  final String id;
  final String taskId;
  final String message;
  final DateTime timestamp;
  final MessageType messageType;
  final Map<String, dynamic>? jsonResponse;
  final List<Artifact> artifacts;

  Chat({
    required this.id,
    required this.taskId,
    required this.message,
    required this.timestamp,
    required this.messageType,
    this.jsonResponse,
    required this.artifacts,
  });

  // Convert a Map (usually from JSON) to a Chat object
  factory Chat.fromMap(Map<String, dynamic> map) {
    return Chat(
      id: map['id'],
      taskId: map['taskId'],
      message: map['message'],
      timestamp: DateTime.parse(map['timestamp']),
      messageType: MessageType.values.firstWhere(
          (e) => e.toString() == 'MessageType.${map['messageType']}'),
      artifacts: (map['artifacts'] as List)
          .map(
              (artifact) => Artifact.fromJson(artifact as Map<String, dynamic>))
          .toList(),
    );
  }

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Chat &&
          runtimeType == other.runtimeType &&
          id == other.id &&
          taskId == other.taskId &&
          message == other.message &&
          timestamp == other.timestamp &&
          messageType == other.messageType &&
          artifacts == other.artifacts;

  @override
  int get hashCode =>
      id.hashCode ^
      taskId.hashCode ^
      message.hashCode ^
      timestamp.hashCode ^
      messageType.hashCode ^
      artifacts.hashCode;

  @override
  String toString() =>
      'Chat(id: $id, taskId: $taskId, message: $message, timestamp: $timestamp, messageType: $messageType, artifacts: $artifacts)'; // Added artifacts in toString method
}