Matthias Nott
3 days ago cda5ac96c4802f7c33f8f0099a8c9c34423dde4a
lib/models/message.dart
....@@ -13,6 +13,7 @@
1313 final String content;
1414 final String? audioUri;
1515 final String? imageBase64;
16
+ final String? mimeType;
1617 final int timestamp;
1718 final MessageStatus? status;
1819 final int? duration;
....@@ -25,6 +26,7 @@
2526 required this.timestamp,
2627 this.audioUri,
2728 this.imageBase64,
29
+ this.mimeType,
2830 this.status,
2931 this.duration,
3032 });
....@@ -67,6 +69,7 @@
6769 required MessageRole role,
6870 required String imageBase64,
6971 String content = '',
72
+ String? mimeType,
7073 MessageStatus? status,
7174 }) {
7275 return Message(
....@@ -75,6 +78,7 @@
7578 type: MessageType.image,
7679 content: content,
7780 imageBase64: imageBase64,
81
+ mimeType: mimeType,
7882 timestamp: DateTime.now().millisecondsSinceEpoch,
7983 status: status,
8084 );
....@@ -84,6 +88,7 @@
8488 String? content,
8589 String? audioUri,
8690 String? imageBase64,
91
+ String? mimeType,
8792 MessageStatus? status,
8893 int? duration,
8994 }) {
....@@ -94,6 +99,7 @@
9499 content: content ?? this.content,
95100 audioUri: audioUri ?? this.audioUri,
96101 imageBase64: imageBase64 ?? this.imageBase64,
102
+ mimeType: mimeType ?? this.mimeType,
97103 timestamp: timestamp,
98104 status: status ?? this.status,
99105 duration: duration ?? this.duration,
....@@ -108,6 +114,7 @@
108114 'content': content,
109115 if (audioUri != null) 'audioUri': audioUri,
110116 if (imageBase64 != null) 'imageBase64': imageBase64,
117
+ if (mimeType != null) 'mimeType': mimeType,
111118 'timestamp': timestamp,
112119 if (status != null) 'status': status!.name,
113120 if (duration != null) 'duration': duration,
....@@ -130,6 +137,7 @@
130137 if (duration != null) 'duration': duration,
131138 // Keep imageBase64 — images are typically 50-200 KB and must survive restart.
132139 if (imageBase64 != null) 'imageBase64': imageBase64,
140
+ if (mimeType != null) 'mimeType': mimeType,
133141 };
134142 }
135143
....@@ -141,6 +149,7 @@
141149 content: json['content'] as String? ?? '',
142150 audioUri: json['audioUri'] as String?,
143151 imageBase64: json['imageBase64'] as String?,
152
+ mimeType: json['mimeType'] as String?,
144153 timestamp: json['timestamp'] as int,
145154 status: json['status'] != null
146155 ? MessageStatus.values.byName(json['status'] as String)