From cda5ac96c4802f7c33f8f0099a8c9c34423dde4a Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Sat, 11 Apr 2026 09:27:07 +0200
Subject: [PATCH] feat: PDF and document file viewing support

---
 lib/models/message.dart |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/lib/models/message.dart b/lib/models/message.dart
index 8a034ec..36c89f6 100644
--- a/lib/models/message.dart
+++ b/lib/models/message.dart
@@ -13,6 +13,7 @@
   final String content;
   final String? audioUri;
   final String? imageBase64;
+  final String? mimeType;
   final int timestamp;
   final MessageStatus? status;
   final int? duration;
@@ -25,6 +26,7 @@
     required this.timestamp,
     this.audioUri,
     this.imageBase64,
+    this.mimeType,
     this.status,
     this.duration,
   });
@@ -67,6 +69,7 @@
     required MessageRole role,
     required String imageBase64,
     String content = '',
+    String? mimeType,
     MessageStatus? status,
   }) {
     return Message(
@@ -75,6 +78,7 @@
       type: MessageType.image,
       content: content,
       imageBase64: imageBase64,
+      mimeType: mimeType,
       timestamp: DateTime.now().millisecondsSinceEpoch,
       status: status,
     );
@@ -84,6 +88,7 @@
     String? content,
     String? audioUri,
     String? imageBase64,
+    String? mimeType,
     MessageStatus? status,
     int? duration,
   }) {
@@ -94,6 +99,7 @@
       content: content ?? this.content,
       audioUri: audioUri ?? this.audioUri,
       imageBase64: imageBase64 ?? this.imageBase64,
+      mimeType: mimeType ?? this.mimeType,
       timestamp: timestamp,
       status: status ?? this.status,
       duration: duration ?? this.duration,
@@ -108,6 +114,7 @@
       'content': content,
       if (audioUri != null) 'audioUri': audioUri,
       if (imageBase64 != null) 'imageBase64': imageBase64,
+      if (mimeType != null) 'mimeType': mimeType,
       'timestamp': timestamp,
       if (status != null) 'status': status!.name,
       if (duration != null) 'duration': duration,
@@ -130,6 +137,7 @@
       if (duration != null) 'duration': duration,
       // Keep imageBase64 — images are typically 50-200 KB and must survive restart.
       if (imageBase64 != null) 'imageBase64': imageBase64,
+      if (mimeType != null) 'mimeType': mimeType,
     };
   }
 
@@ -141,6 +149,7 @@
       content: json['content'] as String? ?? '',
       audioUri: json['audioUri'] as String?,
       imageBase64: json['imageBase64'] as String?,
+      mimeType: json['mimeType'] as String?,
       timestamp: json['timestamp'] as int,
       status: json['status'] != null
           ? MessageStatus.values.byName(json['status'] as String)

--
Gitblit v1.3.1