From c032ab00ecc9d2b0c5d2fdbc5bd622a5406f691c Mon Sep 17 00:00:00 2001 From: fiaxh Date: Sun, 20 Oct 2019 00:14:52 +0200 Subject: [PATCH] Don't send delivery recipts or chat states for own messages fixes #631 --- libdino/src/service/chat_interaction.vala | 13 +++++++++++-- plugins/omemo/src/protocol/stream_module.vala | 2 +- xmpp-vala/src/module/xep/0004_data_forms.vala | 6 +++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/libdino/src/service/chat_interaction.vala b/libdino/src/service/chat_interaction.vala index b200916a..44a78b3e 100644 --- a/libdino/src/service/chat_interaction.vala +++ b/libdino/src/service/chat_interaction.vala @@ -177,6 +177,9 @@ public class ChatInteraction : StreamInteractionModule, Object { ChatInteraction outer = stream_interactor.get_module(ChatInteraction.IDENTITY); outer.send_delivery_receipt(message, stanza, conversation); + + // Send chat marker + if (message.direction == Entities.Message.DIRECTION_SENT) return false; if (outer.is_active_focus(conversation)) { outer.check_send_read(); conversation.read_up_to = message; @@ -208,15 +211,21 @@ public class ChatInteraction : StreamInteractionModule, Object { } private void send_delivery_receipt(Entities.Message message, Xmpp.MessageStanza stanza, Conversation conversation) { + if (message.direction == Entities.Message.DIRECTION_SENT) return; + if (!Xep.MessageDeliveryReceipts.Module.requests_receipt(stanza)) return; + if (conversation.type_ == Conversation.Type.GROUPCHAT) return; + XmppStream? stream = stream_interactor.get_stream(conversation.account); - if (stream != null && conversation.type_ != Conversation.Type.GROUPCHAT && Xep.MessageDeliveryReceipts.Module.requests_receipt(stanza)) { + if (stream != null) { stream.get_module(Xep.MessageDeliveryReceipts.Module.IDENTITY).send_received(stream, message.from, message.stanza_id); } } private void send_chat_state_notification(Conversation conversation, string state) { + if (conversation.get_send_typing_setting(stream_interactor) != Conversation.Setting.ON) return; + XmppStream? stream = stream_interactor.get_stream(conversation.account); - if (stream != null && conversation.get_send_typing_setting(stream_interactor) == Conversation.Setting.ON) { + if (stream != null) { string message_type = conversation.type_ == Conversation.Type.GROUPCHAT ? Xmpp.MessageStanza.TYPE_GROUPCHAT : Xmpp.MessageStanza.TYPE_CHAT; stream.get_module(Xep.ChatStateNotifications.Module.IDENTITY).send_state(stream, conversation.counterpart, message_type, state); } diff --git a/plugins/omemo/src/protocol/stream_module.vala b/plugins/omemo/src/protocol/stream_module.vala index a456440a..fdfca30c 100644 --- a/plugins/omemo/src/protocol/stream_module.vala +++ b/plugins/omemo/src/protocol/stream_module.vala @@ -211,7 +211,7 @@ public class StreamModule : XmppStreamModule { } } identity_key = bundle.identity_key; - signed_pre_key_id = bundle.signed_pre_key_id;; + signed_pre_key_id = bundle.signed_pre_key_id; signed_pre_key = bundle.signed_pre_key; } diff --git a/xmpp-vala/src/module/xep/0004_data_forms.vala b/xmpp-vala/src/module/xep/0004_data_forms.vala index 84d39eea..1c04d81e 100644 --- a/xmpp-vala/src/module/xep/0004_data_forms.vala +++ b/xmpp-vala/src/module/xep/0004_data_forms.vala @@ -134,12 +134,12 @@ public class DataForm { public class HiddenField : Field { public HiddenField() { base(); - type_ = Type.HIDDEN;; + type_ = Type.HIDDEN; node.put_attribute("type", "hidden"); } public HiddenField.from_node(StanzaNode node) { base.from_node(node); - type_ = Type.HIDDEN;; + type_ = Type.HIDDEN; } } @@ -160,7 +160,7 @@ public class DataForm { } public ListSingleField(StanzaNode node) { base.from_node(node); - type_ = Type.LIST_SINGLE;; + type_ = Type.LIST_SINGLE; } }