comparison sat_frontends/quick_frontend/quick_app.py @ 3118:02492db1ce39

quick frontend (app): call `getReady` once connected to bridge: namespaces and encryption plugins are only retrieved once backend is ready, else they may not yet be available (can happen notably when the backend is start at the same time as the frontend, e.g. on Android).
author Goffi <goffi@goffi.org>
date Sat, 25 Jan 2020 21:08:26 +0100
parents b067736d5099
children b9486a7f9b4f
comparison
equal deleted inserted replaced
3117:385fdd684f87 3118:02492db1ce39
347 347
348 def _encryptionPluginsGetEb(self, failure_): 348 def _encryptionPluginsGetEb(self, failure_):
349 log.warning(_("Can't retrieve encryption plugins: {msg}").format(msg=failure_)) 349 log.warning(_("Can't retrieve encryption plugins: {msg}").format(msg=failure_))
350 350
351 def onBridgeConnected(self): 351 def onBridgeConnected(self):
352 self.bridge.namespacesGet( 352 self.bridge.getReady(self.onBackendReady)
353 callback=self._namespacesGetCb, errback=self._namespacesGetEb)
354 # we cache available encryption plugins, as we'll use them on earch
355 # new chat widget
356 self.bridge.encryptionPluginsGet(
357 callback=self._encryptionPluginsGetCb,
358 errback=self._encryptionPluginsGetEb)
359 353
360 def _bridgeCb(self): 354 def _bridgeCb(self):
361 self.registerSignal("connected") 355 self.registerSignal("connected")
362 self.registerSignal("disconnected") 356 self.registerSignal("disconnected")
363 self.registerSignal("actionNew") 357 self.registerSignal("actionNew")
397 elif isinstance(failure, exceptions.BridgeInitError): 391 elif isinstance(failure, exceptions.BridgeInitError):
398 print((_("Can't init bridge"))) 392 print((_("Can't init bridge")))
399 sys.exit(1) 393 sys.exit(1)
400 else: 394 else:
401 print((_("Error while initialising bridge: {}".format(failure)))) 395 print((_("Error while initialising bridge: {}".format(failure))))
396
397 def onBackendReady(self):
398 log.info("backend is ready")
399 self.bridge.namespacesGet(
400 callback=self._namespacesGetCb, errback=self._namespacesGetEb)
401 # we cache available encryption plugins, as we'll use them on each
402 # new chat widget
403 self.bridge.encryptionPluginsGet(
404 callback=self._encryptionPluginsGetCb,
405 errback=self._encryptionPluginsGetEb)
406
402 407
403 @property 408 @property
404 def current_profile(self): 409 def current_profile(self):
405 """Profile that a user would expect to use""" 410 """Profile that a user would expect to use"""
406 try: 411 try: