simplified code across the app and consolidated duplicated helpers

This commit is contained in:
2026-09-27 17:29:54 +02:00
parent 3e856d0b1c
commit ee1240f71a
155 changed files with 1772 additions and 2546 deletions
+22 -23
View File
@@ -11,27 +11,33 @@ import '../widgets/highlighted_linkify.dart';
import '../widgets/message_markdown.dart';
class ChatMessage {
String originalMessage;
Map<String, RichObjectString>? originalData;
final String originalMessage;
final Map<String, RichObjectString>? originalData;
RichObjectString? file;
String content = '';
final RichObjectString? file;
final String content;
ChatMessage({required this.originalMessage, this.originalData}) {
if (originalData?.containsKey('file') ?? false) {
file = originalData?['file'];
}
content = RichObjectStringProcessor.parseToString(
originalMessage,
originalData,
);
}
ChatMessage({required this.originalMessage, this.originalData})
: file = originalData?['file'],
content = RichObjectStringProcessor.parseToString(
originalMessage,
originalData,
);
Widget getWidget({
String? highlightQuery,
TextStyle? style,
bool renderMarkdown = false,
}) {
final poll = originalData?['object'];
if (poll?.type == RichObjectStringObjectType.talkPoll) {
return ListTile(
leading: const Icon(Icons.poll_outlined),
title: Text(poll!.name),
contentPadding: const EdgeInsets.only(left: 10),
);
}
final emojiFontSize = standaloneEmojiFontSize(content);
final effectiveStyle = emojiFontSize == null
? style
@@ -64,14 +70,7 @@ class ChatMessage {
);
}
if (originalData?['object']?.type == RichObjectStringObjectType.talkPoll) {
return ListTile(
leading: const Icon(Icons.poll_outlined),
title: Text(originalData!['object']!.name),
contentPadding: const EdgeInsets.only(left: 10),
);
}
final file = this.file;
if (file == null) return contentWidget;
return Padding(
@@ -88,7 +87,7 @@ class ChatMessage {
const SizedBox(width: 10),
Flexible(
child: Text(
file!.name,
file.name,
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: const TextStyle(fontWeight: FontWeight.bold),
@@ -107,7 +106,7 @@ class ChatMessage {
errorListener: (value) {},
httpHeaders: SessionManager().requireNextcloud().authHeaders,
imageUrl:
'https://${EndpointData().nextcloud().full()}/index.php/core/preview?fileId=${file!.id}&x=130&y=-1&a=1',
'https://${EndpointData().nextcloud().full()}/index.php/core/preview?fileId=${file.id}&x=130&y=-1&a=1',
),
if (originalMessage != '{file}') ...[
SizedBox(height: 5),