summaryrefslogtreecommitdiff
path: root/poezio/core
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2021-01-29 17:56:51 +0100
committerLink Mauve <linkmauve@linkmauve.fr>2021-02-03 15:22:09 +0100
commit19b58d86f5c8e9cc761f0e1e0f85be32016e4235 (patch)
treeacf4ebff3500011316860f1a2bc64ba57e74f260 /poezio/core
parentf2aaba982b9a13b0362909c6703c8ba3211b88e5 (diff)
downloadpoezio-19b58d86f5c8e9cc761f0e1e0f85be32016e4235.tar.gz
poezio-19b58d86f5c8e9cc761f0e1e0f85be32016e4235.tar.bz2
poezio-19b58d86f5c8e9cc761f0e1e0f85be32016e4235.tar.xz
poezio-19b58d86f5c8e9cc761f0e1e0f85be32016e4235.zip
bookmarks: get rid of callbacks
Diffstat (limited to 'poezio/core')
-rw-r--r--poezio/core/commands.py75
1 files changed, 45 insertions, 30 deletions
diff --git a/poezio/core/commands.py b/poezio/core/commands.py
index 45704978..a665d25c 100644
--- a/poezio/core/commands.py
+++ b/poezio/core/commands.py
@@ -440,12 +440,14 @@ class CommandCore:
room, nick = self._parse_join_jid(args[0] if args else '')
password = args[1] if len(args) > 1 else None
- self._add_bookmark(
- room=room,
- nick=nick,
- autojoin=True,
- password=password,
- method='local',
+ asyncio.ensure_future(
+ self._add_bookmark(
+ room=room,
+ nick=nick,
+ autojoin=True,
+ password=password,
+ method='local',
+ )
)
@command_args_parser.quoted(0, 3)
@@ -463,9 +465,11 @@ class CommandCore:
autojoin = (method == 'local' or
(len(args) > 1 and args[1].lower() == 'true'))
- self._add_bookmark(room, nick, autojoin, password, method)
+ asyncio.ensure_future(
+ self._add_bookmark(room, nick, autojoin, password, method)
+ )
- def _add_bookmark(
+ async def _add_bookmark(
self,
room: Optional[str],
nick: Optional[str],
@@ -496,7 +500,7 @@ class CommandCore:
if password is None and tab.password is not None:
password = tab.password
elif room == '*':
- return self._add_wildcard_bookmarks(method)
+ return await self._add_wildcard_bookmarks(method)
# Once we found which room to bookmark, find corresponding tab if it
# exists and fill nickname if none was specified and not default.
@@ -528,10 +532,15 @@ class CommandCore:
bookmark.password = password
self.core.bookmarks.save_local()
- self.core.bookmarks.save_remote(self.core.xmpp,
- self.core.handler.on_bookmark_result)
+ try:
+ result = await self.core.bookmarks.save_remote(
+ self.core.xmpp,
+ )
+ self.core.handler.on_bookmark_result(result)
+ except (IqError, IqTimeout) as iq:
+ self.core.handler.on_bookmark_result(iq)
- def _add_wildcard_bookmarks(self, method):
+ async def _add_wildcard_bookmarks(self, method):
new_bookmarks = []
for tab in self.core.get_tabs(tabs.MucTab):
bookmark = self.core.bookmarks[tab.jid.bare]
@@ -545,8 +554,11 @@ class CommandCore:
new_bookmarks.extend(self.core.bookmarks.bookmarks)
self.core.bookmarks.set(new_bookmarks)
self.core.bookmarks.save_local()
- self.core.bookmarks.save_remote(self.core.xmpp,
- self.core.handler.on_bookmark_result)
+ try:
+ iq = await self.core.bookmarks.save_remote(self.core.xmpp)
+ self.core.handler.on_bookmark_result(iq)
+ except IqError as iq:
+ self.core.handler.on_bookmark_result(iq)
@command_args_parser.ignored
def bookmarks(self):
@@ -563,27 +575,30 @@ class CommandCore:
@command_args_parser.quoted(0, 1)
def remove_bookmark(self, args):
"""/remove_bookmark [jid]"""
+ jid = None
+ if not args:
+ tab = self.core.tabs.current_tab
+ if isinstance(tab, tabs.MucTab):
+ jid = tab.jid.bare
+ else:
+ jid = args[0]
+
+ asyncio.ensure_future(
+ self._remove_bookmark_routine(jid)
+ )
- def cb(success):
- if success:
+ async def _remove_bookmark_routine(self, jid: str):
+ """Asynchronously remove a bookmark"""
+ if self.core.bookmarks[jid]:
+ self.core.bookmarks.remove(jid)
+ try:
+ await self.core.bookmarks.save(self.core.xmpp)
self.core.information('Bookmark deleted', 'Info')
- else:
+ except (IqError, IqTimeout):
self.core.information('Error while deleting the bookmark',
'Error')
-
- if not args:
- tab = self.core.tabs.current_tab
- if isinstance(tab, tabs.MucTab) and self.core.bookmarks[tab.jid.bare]:
- self.core.bookmarks.remove(tab.jid.bare)
- self.core.bookmarks.save(self.core.xmpp, callback=cb)
- else:
- self.core.information('No bookmark to remove', 'Info')
else:
- if self.core.bookmarks[args[0]]:
- self.core.bookmarks.remove(args[0])
- self.core.bookmarks.save(self.core.xmpp, callback=cb)
- else:
- self.core.information('No bookmark to remove', 'Info')
+ self.core.information('No bookmark to remove', 'Info')
@deny_anonymous
@command_args_parser.quoted(0, 1)