aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view/message_widget.vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2022-10-11 13:37:48 +0200
committerfiaxh <git@lightrise.org>2022-10-11 13:37:48 +0200
commit80258a874ddfeb87b4b71f5791eab94a2465de6d (patch)
tree80ef37c3e3c3138d79b3321ee22d185d5a94098e /main/src/ui/conversation_content_view/message_widget.vala
parent6c6e7e3aa7935ec513b7e5ea9b53a92b741ecf92 (diff)
downloaddino-80258a874ddfeb87b4b71f5791eab94a2465de6d.tar.gz
dino-80258a874ddfeb87b4b71f5791eab94a2465de6d.zip
Add support for reactions
Diffstat (limited to 'main/src/ui/conversation_content_view/message_widget.vala')
-rw-r--r--main/src/ui/conversation_content_view/message_widget.vala26
1 files changed, 23 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 3da76226..1f027c89 100644
--- a/main/src/ui/conversation_content_view/message_widget.vala
+++ b/main/src/ui/conversation_content_view/message_widget.vala
@@ -22,6 +22,7 @@ public class MessageMetaItem : ContentMetaItem {
MessageItemEditMode? edit_mode = null;
ChatTextViewController? controller = null;
+ private bool supports_reaction = false;
AdditionalInfo additional_info = AdditionalInfo.NONE;
ulong realize_id = -1;
@@ -35,6 +36,8 @@ public class MessageMetaItem : ContentMetaItem {
message_item = content_item as MessageItem;
this.stream_interactor = stream_interactor;
+ init.begin();
+
label.activate_link.connect(on_label_activate_link);
Message message = ((MessageItem) content_item).message;
@@ -68,6 +71,10 @@ public class MessageMetaItem : ContentMetaItem {
update_label();
}
+ private async void init() {
+ supports_reaction = yield stream_interactor.get_module(Reactions.IDENTITY).conversation_supports_reactions(message_item.conversation);
+ }
+
private string generate_markup_text(ContentItem item) {
MessageItem message_item = item as MessageItem;
Conversation conversation = message_item.conversation;
@@ -187,11 +194,13 @@ public class MessageMetaItem : ContentMetaItem {
}
public override Gee.List<Plugins.MessageAction>? get_item_actions(Plugins.WidgetType type) {
- if (content_item as FileItem != null) return null;
+ if (content_item as FileItem != null || this.in_edit_mode) return null;
+ if (in_edit_mode) return null;
- bool allowed = stream_interactor.get_module(MessageCorrection.IDENTITY).is_own_correction_allowed(message_item.conversation, message_item.message);
Gee.List<Plugins.MessageAction> actions = new ArrayList<Plugins.MessageAction>();
- if (allowed && !in_edit_mode) {
+
+ bool correction_allowed = stream_interactor.get_module(MessageCorrection.IDENTITY).is_own_correction_allowed(message_item.conversation, message_item.message);
+ if (correction_allowed) {
Plugins.MessageAction action1 = new Plugins.MessageAction();
action1.icon_name = "document-edit-symbolic";
action1.callback = (button, content_meta_item_activated, widget) => {
@@ -199,6 +208,17 @@ public class MessageMetaItem : ContentMetaItem {
};
actions.add(action1);
}
+
+ if (supports_reaction) {
+ Plugins.MessageAction action2 = new Plugins.MessageAction();
+ action2.icon_name = "dino-emoticon-add-symbolic";
+ EmojiChooser chooser = new EmojiChooser();
+ chooser.emoji_picked.connect((emoji) => {
+ stream_interactor.get_module(Reactions.IDENTITY).add_reaction(message_item.conversation, message_item, emoji);
+ });
+ action2.popover = chooser;
+ actions.add(action2);
+ }
return actions;
}