add new event for gc after message stanza is built so it can be modified by plugins

This commit is contained in:
Philipp Hörist 2016-06-24 20:12:37 +02:00
parent 7f8e44f087
commit e645f4e838
2 changed files with 33 additions and 10 deletions

View file

@ -814,6 +814,8 @@ class Connection(CommonConnection, ConnectionHandlers):
self._nec_message_outgoing) self._nec_message_outgoing)
gajim.ged.register_event_handler('gc-message-outgoing', ged.OUT_CORE, gajim.ged.register_event_handler('gc-message-outgoing', ged.OUT_CORE,
self._nec_gc_message_outgoing) self._nec_gc_message_outgoing)
gajim.ged.register_event_handler('gc-stanza-message-outgoing', ged.OUT_CORE,
self._nec_gc_stanza_message_outgoing)
gajim.ged.register_event_handler('stanza-message-outgoing', gajim.ged.register_event_handler('stanza-message-outgoing',
ged.OUT_CORE, self._nec_stanza_message_outgoing) ged.OUT_CORE, self._nec_stanza_message_outgoing)
# END __init__ # END __init__
@ -830,6 +832,8 @@ class Connection(CommonConnection, ConnectionHandlers):
self._nec_message_outgoing) self._nec_message_outgoing)
gajim.ged.remove_event_handler('gc-message-outgoing', ged.OUT_CORE, gajim.ged.remove_event_handler('gc-message-outgoing', ged.OUT_CORE,
self._nec_gc_message_outgoing) self._nec_gc_message_outgoing)
gajim.ged.remove_event_handler('gc-stanza-message-outgoing', ged.OUT_CORE,
self._nec_gc_stanza_message_outgoing)
gajim.ged.remove_event_handler('stanza-message-outgoing', ged.OUT_CORE, gajim.ged.remove_event_handler('stanza-message-outgoing', ged.OUT_CORE,
self._nec_stanza_message_outgoing) self._nec_stanza_message_outgoing)
@ -2742,10 +2746,10 @@ class Connection(CommonConnection, ConnectionHandlers):
obj.correction_msg.setBody(obj.message) obj.correction_msg.setBody(obj.message)
if obj.xhtml: if obj.xhtml:
obj.correction_msg.setXHTML(xhtml) obj.correction_msg.setXHTML(xhtml)
obj.msg_id = self.connection.send(obj.correction_msg) gajim.nec.push_incoming_event(GcStanzaMessageOutgoingEvent(
gajim.nec.push_incoming_event(MessageSentEvent(None, conn=self, None, conn=self, automatic_message=obj.automatic_message,
jid=obj.jid, message=obj.message, keyID=None, chatstate=None, jid=obj.jid, message=obj.message,
automatic_message=obj.automatic_message, msg_id=obj.msg_id)) correction_msg=obj.correction_msg))
if obj.callback: if obj.callback:
obj.callback(obj.correction_msg, obj.message) obj.callback(obj.correction_msg, obj.message)
return return
@ -2756,13 +2760,25 @@ class Connection(CommonConnection, ConnectionHandlers):
xhtml=obj.xhtml) xhtml=obj.xhtml)
if obj.label is not None: if obj.label is not None:
msg_iq.addChild(node=obj.label) msg_iq.addChild(node=obj.label)
obj.msg_id = self.connection.send(msg_iq) gajim.nec.push_incoming_event(GcStanzaMessageOutgoingEvent(
gajim.nec.push_incoming_event(MessageSentEvent(None, conn=self, None, conn=self, msg_iq=msg_iq,
jid=obj.jid, message=obj.message, keyID=None, chatstate=None, automatic_message=obj.automatic_message,
automatic_message=obj.automatic_message, msg_id=obj.msg_id)) jid=obj.jid, message=obj.message, correction_msg=None))
if obj.callback: if obj.callback:
obj.callback(msg_iq, obj.message) obj.callback(msg_iq, obj.message)
def _nec_gc_stanza_message_outgoing(self, obj):
if obj.conn.name != self.name:
return
if obj.correction_msg:
obj.msg_id = self.connection.send(obj.correction_msg)
else:
obj.msg_id = self.connection.send(obj.msg_iq)
gajim.nec.push_incoming_event(MessageSentEvent(
None, conn=self, jid=obj.jid, message=obj.message, keyID=None,
chatstate=None, automatic_message=obj.automatic_message,
msg_id=obj.msg_id))
def send_gc_subject(self, jid, subject): def send_gc_subject(self, jid, subject):
if not gajim.account_is_connected(self.name): if not gajim.account_is_connected(self.name):
return return

View file

@ -2688,6 +2688,13 @@ class StanzaMessageOutgoingEvent(nec.NetworkOutgoingEvent):
def generate(self): def generate(self):
return True return True
class GcStanzaMessageOutgoingEvent(nec.NetworkOutgoingEvent):
name='gc-stanza-message-outgoing'
base_network_events = []
def generate(self):
return True
class GcMessageOutgoingEvent(nec.NetworkOutgoingEvent): class GcMessageOutgoingEvent(nec.NetworkOutgoingEvent):
name = 'gc-message-outgoing' name = 'gc-message-outgoing'
base_network_events = [] base_network_events = []