core, quick_frontend, primitivus, wixi, bridge: fixed delayed message timestamp:
- new "extra" parameter in newMessage signal
This commit is contained in:
parent
fef2b1a620
commit
65103362a6
4 changed files with 39 additions and 28 deletions
|
|
@ -155,8 +155,8 @@ class DbusObject(dbus.service.Object):
|
|||
pass
|
||||
|
||||
@dbus.service.signal(const_INT_PREFIX+const_CORE_SUFFIX,
|
||||
signature='sssss')
|
||||
def newMessage(self, from_jid, message, mess_type, to_jid, profile):
|
||||
signature='ssssa{ss}s')
|
||||
def newMessage(self, from_jid, message, mess_type, to_jid, extra, profile):
|
||||
pass
|
||||
|
||||
@dbus.service.signal(const_INT_PREFIX+const_CORE_SUFFIX,
|
||||
|
|
@ -533,8 +533,8 @@ class DBusBridge(Bridge):
|
|||
def newContact(self, contact_jid, attributes, groups, profile):
|
||||
self.dbus_bridge.newContact(contact_jid, attributes, groups, profile)
|
||||
|
||||
def newMessage(self, from_jid, message, mess_type, to_jid, profile):
|
||||
self.dbus_bridge.newMessage(from_jid, message, mess_type, to_jid, profile)
|
||||
def newMessage(self, from_jid, message, mess_type, to_jid, extra, profile):
|
||||
self.dbus_bridge.newMessage(from_jid, message, mess_type, to_jid, extra, profile)
|
||||
|
||||
def paramUpdate(self, name, value, category, profile):
|
||||
self.dbus_bridge.paramUpdate(name, value, category, profile)
|
||||
|
|
|
|||
|
|
@ -44,13 +44,14 @@ doc_param_3=%(doc_profile)s
|
|||
[newMessage]
|
||||
type=signal
|
||||
category=core
|
||||
sig_in=sssss
|
||||
sig_in=ssssa{ss}s
|
||||
doc=A message has been received
|
||||
doc_param_0=from_jid: JID where the message is comming from
|
||||
doc_param_1=message: Message itself
|
||||
doc_param_2=mess_type: Type of the message (cf RFC 3921 #2.1.1)
|
||||
doc_param_3=to_jid: JID where the message must be sent
|
||||
doc_param_4=%(doc_profile)s
|
||||
doc_param_4=extra: extra message information
|
||||
doc_param_5=%(doc_profile)s
|
||||
|
||||
[newAlert]
|
||||
type=signal
|
||||
|
|
|
|||
|
|
@ -501,7 +501,7 @@ class SAT(service.Service):
|
|||
if mess_data["type"]!="groupchat":
|
||||
self.memory.addToHistory(current_jid, jid.JID(to), unicode(mess_data["message"]), unicode(mess_data["type"]), profile=profile) #we don't add groupchat message to history, as we get them back
|
||||
#and they will be added then
|
||||
self.bridge.newMessage(message['from'], unicode(mess_data["message"]), mess_type=mess_data["type"], to_jid=message['to'], profile=profile) #We send back the message, so all clients are aware of it
|
||||
self.bridge.newMessage(message['from'], unicode(mess_data["message"]), mess_type=mess_data["type"], to_jid=message['to'], extra={}, profile=profile) #We send back the message, so all clients are aware of it
|
||||
|
||||
|
||||
def setPresence(self, to="", show="", priority = 0, statuses={}, profile_key='@DEFAULT@'):
|
||||
|
|
|
|||
|
|
@ -21,9 +21,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
from twisted.internet import task, defer
|
||||
from twisted.words.protocols.jabber import jid, xmlstream
|
||||
from wokkel import client, disco, xmppim, generic, compat
|
||||
from wokkel import client, disco, xmppim, generic, compat, delay
|
||||
from logging import debug, info, error
|
||||
from sat.core import exceptions
|
||||
from calendar import timegm
|
||||
|
||||
|
||||
class SatXMPPClient(client.XMPPClient):
|
||||
|
|
@ -104,17 +105,25 @@ class SatMessageProtocol(xmppim.MessageProtocol):
|
|||
self.host = host
|
||||
|
||||
def onMessage(self, message):
|
||||
debug (_(u"got message from: %s"), message["from"])
|
||||
if not self.host.trigger.point("MessageReceived",message, profile=self.parent.profile):
|
||||
return
|
||||
for e in message.elements():
|
||||
if e.name == "body":
|
||||
mess_type = message['type'] if message.hasAttribute('type') else 'normal'
|
||||
mess_body = e.children[0] if e.children else ""
|
||||
self.host.bridge.newMessage(message["from"], mess_body, mess_type, message['to'], profile=self.parent.profile)
|
||||
if not u"delay" in [elem.name for elem in message.elements()]: #we don't save delayed messages in history
|
||||
self.host.memory.addToHistory(jid.JID(message["from"]), jid.JID(message["to"]), mess_body, mess_type, profile=self.parent.profile)
|
||||
break
|
||||
debug (_(u"got message from: %s"), message["from"])
|
||||
if not self.host.trigger.point("MessageReceived",message, profile=self.parent.profile):
|
||||
return
|
||||
for e in message.elements():
|
||||
if e.name == "body":
|
||||
mess_type = message['type'] if message.hasAttribute('type') else 'normal'
|
||||
mess_body = e.children[0] if e.children else ""
|
||||
try:
|
||||
_delay = delay.Delay.fromElement(filter(lambda elm: elm.name == 'delay', message.elements())[0])
|
||||
timestamp = timegm(_delay.stamp.utctimetuple())
|
||||
extra = {"archive": str(timestamp)}
|
||||
if mess_type != 'groupchat': #XXX: we don't save delayed messages in history for groupchats
|
||||
#TODO: add delayed messages to history if they aren't already in it
|
||||
self.host.memory.addToHistory(jid.JID(message["from"]), jid.JID(message["to"]), mess_body, mess_type, timestamp, profile=self.parent.profile)
|
||||
except IndexError:
|
||||
extra = {}
|
||||
self.host.memory.addToHistory(jid.JID(message["from"]), jid.JID(message["to"]), mess_body, mess_type, profile=self.parent.profile)
|
||||
self.host.bridge.newMessage(message["from"], mess_body, mess_type, message['to'], extra, profile=self.parent.profile)
|
||||
break
|
||||
|
||||
class SatRosterProtocol(xmppim.RosterClientProtocol):
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue