diff options
author | mathieui <mathieui@mathieui.net> | 2021-01-29 12:05:01 +0100 |
---|---|---|
committer | Link Mauve <linkmauve@linkmauve.fr> | 2021-02-03 15:22:09 +0100 |
commit | f5ad5199aeaa020e0d6a723341cd578a53c10850 (patch) | |
tree | dc487945e8a92985948c55c7d27526afdd50d459 /poezio/core | |
parent | 262583133e4965977b8340eb9ae125f7ad5c1751 (diff) | |
download | poezio-f5ad5199aeaa020e0d6a723341cd578a53c10850.tar.gz poezio-f5ad5199aeaa020e0d6a723341cd578a53c10850.tar.bz2 poezio-f5ad5199aeaa020e0d6a723341cd578a53c10850.tar.xz poezio-f5ad5199aeaa020e0d6a723341cd578a53c10850.zip |
Use async properly on session start
Diffstat (limited to 'poezio/core')
-rw-r--r-- | poezio/core/core.py | 21 | ||||
-rw-r--r-- | poezio/core/handlers.py | 35 |
2 files changed, 28 insertions, 28 deletions
diff --git a/poezio/core/core.py b/poezio/core/core.py index fa76e1d2..ee1a111b 100644 --- a/poezio/core/core.py +++ b/poezio/core/core.py @@ -44,7 +44,10 @@ from poezio import theming from poezio import timed_events from poezio import windows -from poezio.bookmarks import BookmarkList +from poezio.bookmarks import ( + BookmarkList, + Bookmark, +) from poezio.common import get_error_message from poezio.config import config, firstrun from poezio.contact import Contact, Resource @@ -1710,7 +1713,7 @@ class Core: shortdesc='Send your gaming activity.', completion=None) - def check_blocking(self, features): + def check_blocking(self, features: List[str]): if 'urn:xmpp:blocking' in features and not self.xmpp.anon: self.register_command( 'block', @@ -1729,7 +1732,7 @@ class Core: ####################### Random things to move ################################# - def join_initial_rooms(self, bookmarks): + def join_initial_rooms(self, bookmarks: List[Bookmark]): """Join all rooms given in the iterator `bookmarks`""" for bm in bookmarks: if not (bm.autojoin or config.get('open_all_bookmarks')): @@ -1745,14 +1748,16 @@ class Core: if bm.autojoin: tab.join() - def check_bookmark_storage(self, features): + async def check_bookmark_storage(self, features: List[str]): private = 'jabber:iq:private' in features pep_ = 'http://jabber.org/protocol/pubsub#publish' in features self.bookmarks.available_storage['private'] = private self.bookmarks.available_storage['pep'] = pep_ - def _join_remote_only(iq): - if iq['type'] == 'error': + if not self.xmpp.anon and config.get('use_remote_bookmarks'): + try: + await self.bookmarks.get_remote(self.xmpp, self.information) + except IqError as iq: type_ = iq['error']['type'] condition = iq['error']['condition'] if not (type_ == 'cancel' and condition == 'item-not-found'): @@ -1763,10 +1768,6 @@ class Core: remote_bookmarks = self.bookmarks.remote() self.join_initial_rooms(remote_bookmarks) - if not self.xmpp.anon and config.get('use_remote_bookmarks'): - self.bookmarks.get_remote(self.xmpp, self.information, - _join_remote_only) - def room_error(self, error: IqError, room_name: str) -> None: """ Display the error in the tab diff --git a/poezio/core/handlers.py b/poezio/core/handlers.py index a388c5d6..1d5dcffe 100644 --- a/poezio/core/handlers.py +++ b/poezio/core/handlers.py @@ -79,27 +79,26 @@ class HandlerCore: def __init__(self, core): self.core = core - def on_session_start_features(self, _): + async def on_session_start_features(self, _): """ Enable carbons & blocking on session start if wanted and possible """ - def callback(iq): - if not iq: - return - features = iq['disco_info']['features'] - rostertab = self.core.tabs.by_name_and_class( - 'Roster', tabs.RosterInfoTab) - rostertab.check_blocking(features) - rostertab.check_saslexternal(features) - self.core.check_blocking(features) - if (config.get('enable_carbons') - and 'urn:xmpp:carbons:2' in features): - self.core.xmpp.plugin['xep_0280'].enable() - self.core.check_bookmark_storage(features) - - self.core.xmpp.plugin['xep_0030'].get_info( - jid=self.core.xmpp.boundjid.domain, callback=callback) + + iq = await self.core.xmpp.plugin['xep_0030'].get_info( + jid=self.core.xmpp.boundjid.domain + ) + features = iq['disco_info']['features'] + + rostertab = self.core.tabs.by_name_and_class( + 'Roster', tabs.RosterInfoTab) + rostertab.check_saslexternal(features) + rostertab.check_blocking(features) + self.core.check_blocking(features) + if (config.get('enable_carbons') + and 'urn:xmpp:carbons:2' in features): + self.core.xmpp.plugin['xep_0280'].enable() + await self.core.check_bookmark_storage(features) def find_identities(self, _): asyncio.ensure_future( @@ -1348,7 +1347,7 @@ class HandlerCore: pres.send() self.core.bookmarks.get_local() # join all the available bookmarks. As of yet, this is just the local ones - self.core.join_initial_rooms(self.core.bookmarks) + self.core.join_initial_rooms(self.core.bookmarks.local()) if config.get('enable_user_nick'): self.core.xmpp.plugin['xep_0172'].publish_nick( |