summaryrefslogtreecommitdiff
path: root/poezio/log_loader.py
diff options
context:
space:
mode:
Diffstat (limited to 'poezio/log_loader.py')
-rw-r--r--poezio/log_loader.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/poezio/log_loader.py b/poezio/log_loader.py
index 146bc9b4..2e3b27c2 100644
--- a/poezio/log_loader.py
+++ b/poezio/log_loader.py
@@ -76,10 +76,17 @@ class LogLoader:
mam_only: bool
def __init__(self, logger: Logger, tab: tabs.ChatTab,
- local_logs: bool = True):
+ local_logs: bool = True,
+ done_event: Optional[asyncio.Event] = None):
self.mam_only = not local_logs
self.logger = logger
self.tab = tab
+ self.done_event = done_event
+
+ def _done(self) -> None:
+ """Signal end if possible"""
+ if self.done_event is not None:
+ self.done_event.set()
async def tab_open(self) -> None:
"""Called on a tab opening or a MUC join"""
@@ -104,6 +111,7 @@ class LogLoader:
if messages:
self.tab._text_buffer.add_history_messages(messages)
self.tab.core.refresh_window()
+ self._done()
async def mam_tab_open(self, nb: int) -> List[BaseMessage]:
"""Fetch messages in MAM when opening a new tab.
@@ -238,6 +246,7 @@ class LogLoader:
if messages:
tab._text_buffer.add_history_messages(messages)
tab.core.refresh_window()
+ self._done()
async def local_scroll_requested(self, nb: int) -> List[BaseMessage]:
"""Fetch messages locally on scroll up.
@@ -321,7 +330,7 @@ class MAMFiller:
self.tab = tab
self.logger = logger
logger.fd_busy(tab.jid)
- self.future = asyncio.ensure_future(self.fetch_routine())
+ self.future = asyncio.create_task(self.fetch_routine())
self.done = asyncio.Event()
self.limit = limit
self.result = 0