fix(ui): guard ref.read with mounted checks in _delete after async gaps

After showDialog and after the two repo awaits (getEmail/deleteEmail),
the widget may have been disposed — calling ref.read on a disposed
ConsumerStatefulElement throws "Cannot use 'ref' after the widget was
disposed." Add if (!mounted) return; at both points.

Fixes #80

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Thomas SharedInbox
2026-05-14 23:04:11 +02:00
co-authored by Claude Sonnet 4.6
parent 7aa9ddbe07
commit ebff60a4d4
+2
View File
@@ -261,6 +261,7 @@ class _EmailMessageCardState extends ConsumerState<_EmailMessageCard> {
],
),
);
if (!mounted) return;
if (confirmed == true) {
final repo = ref.read(emailRepositoryProvider);
// Fetch data first for IMAP undo support
@@ -268,6 +269,7 @@ class _EmailMessageCardState extends ConsumerState<_EmailMessageCard> {
final destPath = await repo.deleteEmail(widget.email.id);
if (!mounted) return;
if (original != null) {
unawaited(
ref.read(undoServiceProvider.notifier).pushAction(