diff options
| author | fiaxh <git@lightrise.org> | 2025-11-14 14:48:25 -0600 |
|---|---|---|
| committer | fiaxh <git@lightrise.org> | 2025-11-14 14:48:25 -0600 |
| commit | 1ede8ade12f26cf39d29d5c616bd28693d677e09 (patch) | |
| tree | dc0bb08cd95c1b47291e48766dfd3fbd7acbaf40 /main/src/ui/conversation_content_view/message_widget.vala | |
| parent | 9f02aba799e07ad2ab587334fe59c577e5d4605d (diff) | |
Add support for message moderation and retraction
Diffstat (limited to 'main/src/ui/conversation_content_view/message_widget.vala')
| -rw-r--r-- | main/src/ui/conversation_content_view/message_widget.vala | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/main/src/ui/conversation_content_view/message_widget.vala b/main/src/ui/conversation_content_view/message_widget.vala index d116e7de..5f0c067a 100644 --- a/main/src/ui/conversation_content_view/message_widget.vala +++ b/main/src/ui/conversation_content_view/message_widget.vala @@ -36,7 +36,8 @@ public class MessageMetaItem : ContentMetaItem { message_item = content_item as MessageItem; this.stream_interactor = stream_interactor; - stream_interactor.get_module(MessageCorrection.IDENTITY).received_correction.connect(on_received_correction); + stream_interactor.get_module(MessageCorrection.IDENTITY).received_correction.connect(on_updated_item); + stream_interactor.get_module(MessageDeletion.IDENTITY).item_deleted.connect(on_updated_item); label.activate_link.connect(on_label_activate_link); @@ -157,6 +158,10 @@ public class MessageMetaItem : ContentMetaItem { string dim_color = Util.is_dark_theme(this.label) ? "#BDBDBD" : "#707070"; + if (message.body == "") { + markup_text = @"<i><span size='small' color='$dim_color'>%s</span></i>".printf(_("Message deleted")); + theme_dependent = true; + } if (message.edit_to != null) { markup_text += @" <span size='small' color='$dim_color'>(%s)</span>".printf(_("edited")); theme_dependent = true; @@ -231,6 +236,7 @@ public class MessageMetaItem : ContentMetaItem { action1.name = "correction"; action1.icon_name = "document-edit-symbolic"; action1.tooltip = _("Edit message"); + action1.shortcut_action = false; action1.callback = () => { this.in_edit_mode = true; }; @@ -240,6 +246,9 @@ public class MessageMetaItem : ContentMetaItem { actions.add(get_reply_action(content_item, message_item.conversation, stream_interactor)); actions.add(get_reaction_action(content_item, message_item.conversation, stream_interactor)); + var delete_action = get_delete_action(content_item, message_item.conversation, stream_interactor); + if (delete_action != null) actions.add(delete_action); + return actions; } @@ -277,7 +286,7 @@ public class MessageMetaItem : ContentMetaItem { } } - private void on_received_correction(ContentItem content_item) { + private void on_updated_item(ContentItem content_item) { if (this.content_item.id == content_item.id) { this.content_item = content_item; message_item = content_item as MessageItem; @@ -294,7 +303,8 @@ public class MessageMetaItem : ContentMetaItem { } public override void dispose() { - stream_interactor.get_module(MessageCorrection.IDENTITY).received_correction.disconnect(on_received_correction); + stream_interactor.get_module(MessageCorrection.IDENTITY).received_correction.disconnect(on_updated_item); + stream_interactor.get_module(MessageDeletion.IDENTITY).item_deleted.disconnect(on_updated_item); this.notify["in-edit-mode"].disconnect(on_in_edit_mode_changed); if (marked_notify_handler_id != -1) { this.disconnect(marked_notify_handler_id); |
