From 0a301c4c9b68b33d2b9bf703f82120daaf3a3a77 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Wed, 8 Oct 2025 23:54:59 +0800 Subject: [PATCH] :lipstick: Confirm when deleting message --- assets/i18n/en-US.json | 2 ++ lib/widgets/chat/message_item.dart | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/assets/i18n/en-US.json b/assets/i18n/en-US.json index 766dc766..c41eaa4a 100644 --- a/assets/i18n/en-US.json +++ b/assets/i18n/en-US.json @@ -48,6 +48,8 @@ "deletePublisherHint": "Are you sure to delete this publisher? This will also deleted all the post and collections under this publisher.", "deletePost": "Delete Post", "deletePostHint": "Are you sure to delete this post?", + "deleteMessage": "Delete Message", + "deleteMessageConfirmation": "Are you sure you want to delete this message?", "copyLink": "Copy Link", "postCreateAccountTitle": "Thanks for joining!", "postCreateAccountNext": "What's next?", diff --git a/lib/widgets/chat/message_item.dart b/lib/widgets/chat/message_item.dart index b27876d0..c891ce92 100644 --- a/lib/widgets/chat/message_item.dart +++ b/lib/widgets/chat/message_item.dart @@ -26,6 +26,7 @@ import 'package:island/widgets/post/post_shared.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:styled_widget/styled_widget.dart'; import 'package:island/widgets/content/sheet.dart'; +import 'package:island/widgets/alert.dart'; class MessageItemAction { static const String edit = "edit"; @@ -369,6 +370,17 @@ class MessageHoverActionMenu extends StatelessWidget { required this.remoteMessage, }); + Future _handleDelete(BuildContext context) async { + final confirmed = await showConfirmAlert( + 'deleteMessageConfirmation'.tr(), + 'deleteMessage'.tr(), + ); + + if (confirmed) { + onAction?.call(MessageItemAction.delete); + } + } + @override Widget build(BuildContext context) { return Container( @@ -397,7 +409,7 @@ class MessageHoverActionMenu extends StatelessWidget { if (isCurrentUser) IconButton( icon: Icon(Symbols.delete, size: 16), - onPressed: () => onAction?.call(MessageItemAction.delete), + onPressed: () => _handleDelete(context), tooltip: 'delete'.tr(), padding: const EdgeInsets.all(8), constraints: const BoxConstraints(minWidth: 32, minHeight: 32),