From 3310d9b9075ab48ccb81799151b564914263982e Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Sat, 6 Jun 2026 19:13:45 -0400 Subject: [PATCH] nicer error handling for message parses --- lib/widgets/error_dialog.dart | 11 ++++++----- lib/widgets/renderers/event.dart | 11 ++++++++--- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/widgets/error_dialog.dart b/lib/widgets/error_dialog.dart index b016a8b..9b62200 100644 --- a/lib/widgets/error_dialog.dart +++ b/lib/widgets/error_dialog.dart @@ -21,11 +21,12 @@ class ErrorDialog extends ConsumerWidget { onPressed: () => ref.invalidate(provider!), child: const Text("Try Again"), ), - TextButton( - onPressed: () => - Navigator.of(context).popUntil((route) => route.isFirst), - child: const Text("Go Back"), - ), + if (Navigator.of(context).canPop()) + TextButton( + onPressed: () => + Navigator.of(context).popUntil((route) => route.isFirst), + child: const Text("Go Back"), + ), ], ); } diff --git a/lib/widgets/renderers/event.dart b/lib/widgets/renderers/event.dart index d1c1c7c..a4f659c 100644 --- a/lib/widgets/renderers/event.dart +++ b/lib/widgets/renderers/event.dart @@ -17,6 +17,7 @@ import "package:nexus/models/content/server_acl.dart"; import "package:nexus/models/content/sticker.dart"; import "package:nexus/models/content/topic.dart"; import "package:nexus/models/event.dart"; +import "package:nexus/widgets/error_dialog.dart"; import "package:nexus/widgets/lazy_loading/message_displayname.dart"; import "package:nexus/widgets/renderers/message.dart"; import "package:nexus/widgets/reaction_row.dart"; @@ -49,9 +50,13 @@ class EventRenderer extends ConsumerWidget { final child = event.redactedBy != null || event.relationType == "m.replace" ? null : switch (event.content) { - Content(:final parseError?) => SelectableText( - "An error occurred while parsing this event:\n$parseError\n${parseError.stackTrace}", - style: errorStyle, + Content(:final parseError?) => Row( + children: [ + ErrorDialog( + "An error occurred while parsing event ${event.eventId}:\n$parseError", + parseError.stackTrace, + ), + ], ), MessageContent() ||