add new event for gc after message stanza is built so it can be modified by plugins
This commit is contained in:
parent
7f8e44f087
commit
e645f4e838
2 changed files with 33 additions and 10 deletions
|
@ -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)
|
||||||
|
|
||||||
|
@ -2736,16 +2740,16 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
if obj.correction_msg.getTag('replace'):
|
if obj.correction_msg.getTag('replace'):
|
||||||
obj.correction_msg.delChild('replace')
|
obj.correction_msg.delChild('replace')
|
||||||
obj.correction_msg.setTag('replace', attrs={'id': id_},
|
obj.correction_msg.setTag('replace', attrs={'id': id_},
|
||||||
namespace=nbxmpp.NS_CORRECT)
|
namespace=nbxmpp.NS_CORRECT)
|
||||||
id2 = self.connection.getAnID()
|
id2 = self.connection.getAnID()
|
||||||
obj.correction_msg.setID(id2)
|
obj.correction_msg.setID(id2)
|
||||||
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
|
||||||
|
@ -2753,16 +2757,28 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
from common.rst_xhtml_generator import create_xhtml
|
from common.rst_xhtml_generator import create_xhtml
|
||||||
obj.xhtml = create_xhtml(obj.message)
|
obj.xhtml = create_xhtml(obj.message)
|
||||||
msg_iq = nbxmpp.Message(obj.jid, obj.message, typ='groupchat',
|
msg_iq = nbxmpp.Message(obj.jid, obj.message, typ='groupchat',
|
||||||
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
|
||||||
|
|
|
@ -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 = []
|
||||||
|
|
Loading…
Add table
Reference in a new issue