frontends (QuickApp), tools (TriggerManager): frontends can also use triggers + add those for sending and receiving a message
This commit is contained in:
parent
8b15911077
commit
5d1681de93
1 changed files with 21 additions and 5 deletions
|
|
@ -22,6 +22,7 @@ log = getLogger(__name__)
|
|||
|
||||
from sat.core.i18n import _
|
||||
from sat.core import exceptions
|
||||
from sat.tools.misc import TriggerManager
|
||||
|
||||
from sat_frontends.tools import jid
|
||||
from sat_frontends.quick_frontend.quick_widgets import QuickWidgetsManager
|
||||
|
|
@ -219,6 +220,9 @@ class QuickApp(object):
|
|||
# listeners
|
||||
self._listeners = {} # key: listener type ("avatar", "selected", etc), value: list of callbacks
|
||||
|
||||
# triggers
|
||||
self.trigger = TriggerManager() # trigger are used to change the default behaviour
|
||||
|
||||
## bridge ##
|
||||
try:
|
||||
self.bridge = create_bridge()
|
||||
|
|
@ -453,6 +457,10 @@ class QuickApp(object):
|
|||
def newMessageHandler(self, from_jid_s, msg, type_, to_jid_s, extra, profile):
|
||||
from_jid = jid.JID(from_jid_s)
|
||||
to_jid = jid.JID(to_jid_s)
|
||||
|
||||
if not self.trigger.point("newMessageTrigger", from_jid, msg, type_, to_jid, extra, profile=profile):
|
||||
return
|
||||
|
||||
from_me = from_jid.bare == self.profiles[profile].whoami.bare
|
||||
target = to_jid if from_me else from_jid
|
||||
|
||||
|
|
@ -486,7 +494,11 @@ class QuickApp(object):
|
|||
callback = lambda dummy=None: None # FIXME: optional argument is here because pyjamas doesn't support callback without arg with json proxy
|
||||
if errback is None:
|
||||
errback = lambda failure: self.showDialog(failure.fullname, failure.message, "error")
|
||||
self.bridge.sendMessage(to_jid, message, subject, mess_type, extra, profile_key, callback=callback, errback=errback)
|
||||
|
||||
if not self.trigger.point("sendMessageTrigger", to_jid, message, subject, mess_type, extra, callback, errback, profile_key=profile_key):
|
||||
return
|
||||
|
||||
self.bridge.sendMessage(unicode(to_jid), message, subject, mess_type, extra, profile_key, callback=callback, errback=errback)
|
||||
|
||||
def newAlertHandler(self, msg, title, alert_type, profile):
|
||||
assert alert_type in ['INFO', 'ERROR']
|
||||
|
|
|
|||
Loading…
Reference in a new issue