fix: remove delete confirmation dialog from thread view (#402)
## Summary - Removes the `AlertDialog` popup that appeared when tapping delete in thread view - Deletion now happens immediately, matching the behaviour of the single mail view - The existing `UndoShell` widget already listens for new `UndoAction` pushes and shows a snack bar with an **Undo** button — no extra UI code needed Closes #398 Co-authored-by: Thomas SharedInbox <sharedinbox@thomas-guettler.de> Reviewed-on: https://codeberg.org/guettli/sharedinbox/pulls/402
This commit was merged in pull request #402.
This commit is contained in:
committed by
guettli
co-authored by
guettli
Thomas SharedInbox
parent
582f6764eb
commit
b0354c7423
@@ -297,47 +297,27 @@ class _EmailMessageCardState extends ConsumerState<_EmailMessageCard> {
|
||||
}
|
||||
|
||||
Future<void> _delete() async {
|
||||
final confirmed = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (ctx) => AlertDialog(
|
||||
title: const Text('Delete email'),
|
||||
content: const Text('Move this email to Trash?'),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Navigator.pop(ctx, false),
|
||||
child: const Text('Cancel'),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () => Navigator.pop(ctx, true),
|
||||
child: const Text('Delete'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
final repo = ref.read(emailRepositoryProvider);
|
||||
// Fetch data first for IMAP undo support
|
||||
final original = await repo.getEmail(widget.email.id);
|
||||
|
||||
final destPath = await repo.deleteEmail(widget.email.id);
|
||||
|
||||
if (!mounted) return;
|
||||
if (confirmed == true) {
|
||||
final repo = ref.read(emailRepositoryProvider);
|
||||
// Fetch data first for IMAP undo support
|
||||
final original = await repo.getEmail(widget.email.id);
|
||||
|
||||
final destPath = await repo.deleteEmail(widget.email.id);
|
||||
|
||||
if (!mounted) return;
|
||||
if (original != null) {
|
||||
unawaited(
|
||||
ref.read(undoServiceProvider.notifier).pushAction(
|
||||
UndoAction(
|
||||
id: DateTime.now().toIso8601String(),
|
||||
accountId: widget.email.accountId,
|
||||
type: UndoType.delete,
|
||||
emailIds: [widget.email.id],
|
||||
sourceMailboxPath: widget.email.mailboxPath,
|
||||
destinationMailboxPath: destPath,
|
||||
originalEmails: [original],
|
||||
),
|
||||
if (original != null) {
|
||||
unawaited(
|
||||
ref.read(undoServiceProvider.notifier).pushAction(
|
||||
UndoAction(
|
||||
id: DateTime.now().toIso8601String(),
|
||||
accountId: widget.email.accountId,
|
||||
type: UndoType.delete,
|
||||
emailIds: [widget.email.id],
|
||||
sourceMailboxPath: widget.email.mailboxPath,
|
||||
destinationMailboxPath: destPath,
|
||||
originalEmails: [original],
|
||||
),
|
||||
);
|
||||
}
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user