From 4c94977b90f41b08c652389d7b2bf298d8f925b4 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 14 Jul 2026 23:29:20 +0000 Subject: [PATCH] handle redacted messages more gracefully --- lib/models/content/message.dart | 2 +- lib/widgets/renderers/message.dart | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/models/content/message.dart b/lib/models/content/message.dart index b5e308c..6314161 100644 --- a/lib/models/content/message.dart +++ b/lib/models/content/message.dart @@ -10,7 +10,7 @@ part "message.g.dart"; @Freezed(unionKey: "msgtype", fallbackUnion: "default") abstract class MessageContent extends Content with _$MessageContent { MessageContent._(); - factory MessageContent({required String body}) = UnknownMessageContent; + factory MessageContent({String? body}) = UnknownMessageContent; @FreezedUnionValue("m.text") factory MessageContent.text({ diff --git a/lib/widgets/renderers/message.dart b/lib/widgets/renderers/message.dart index 3470246..25d2d73 100644 --- a/lib/widgets/renderers/message.dart +++ b/lib/widgets/renderers/message.dart @@ -276,14 +276,23 @@ class MessageRenderer extends ConsumerWidget { ], ], ), - MessageContent(:final body) => Row( - spacing: 8, - mainAxisSize: .min, - children: [ - Text("Unknown message type:", style: errorStyle), - Text(body), - ], - ), + MessageContent(:final body) => + body == null + ? Text( + "This message is redacted", + style: errorStyle, + ) + : Row( + spacing: 8, + mainAxisSize: .min, + children: [ + Text( + "Unknown message type:", + style: errorStyle, + ), + Text(body), + ], + ), _ => throw Exception("This is impossible"), }, ],