backend, bridge: asynchronous history

quick_frontend: use of asynchronous history
This commit is contained in:
Goffi 2011-11-08 01:08:11 +01:00
commit f1966d9692
2 changed files with 94 additions and 79 deletions

View file

@ -96,8 +96,8 @@ class DBusBridgeFrontend(BridgeFrontend):
def getContacts(self, profile_key="@DEFAULT@"):
return self.db_core_iface.getContacts(profile_key)
def getHistory(self, from_jid, to_jid, size):
return self.db_core_iface.getHistory(from_jid, to_jid, size)
def getHistory(self, from_jid, to_jid, limit, between=True, callback=None, errback=None):
return self.db_core_iface.getHistory(from_jid, to_jid, limit, between, reply_handler=callback, error_handler=lambda err:errback(err._dbus_error_name[len(const_ERROR_PREFIX)+1:]))
def getLastResource(self, contact_jid, profile_key="@DEFAULT@"):
return unicode(self.db_core_iface.getLastResource(contact_jid, profile_key))

View file

@ -87,13 +87,18 @@ class QuickChat():
def historyPrint(self, size=20, keep_last=False, profile='@NONE@'):
"""Print the initial history"""
debug (_("now we print history"))
history=self.host.bridge.getHistory(self.host.profiles[profile]['whoami'].short, self.target, 20)
stamps=history.keys()
stamps.sort()
for stamp in stamps:
self.printMessage(JID(history[stamp][0]), history[stamp][1], profile, stamp)
if keep_last: ##FIXME hack for sortilege
self.last_history = stamps[-1] if stamps else None
def onHistory(history):
stamps=history.keys()
stamps.sort()
for stamp in stamps:
from_jid, to_jid, message = history[stamp]
self.printMessage(JID(from_jid), message, profile, stamp)
if keep_last: ##FIXME hack for sortilege
self.last_history = stamps[-1] if stamps else None
def onHistoryError(err):
error (_("Can't get history"))
history=self.host.bridge.getHistory(self.host.profiles[profile]['whoami'].short, self.target.short, 20, callback=onHistory, errback=onHistoryError)
def _get_nick(self, jid):
"""Return nick of this jid when possible"""