Add an "end of archive" message type

This commit is contained in:
mathieui 2020-05-22 01:55:32 +02:00
parent d174e1fa35
commit 36c85a5df4
2 changed files with 17 additions and 1 deletions

View file

@ -26,7 +26,11 @@ from poezio import tabs
from poezio import xhtml, colors
from poezio.config import config
from poezio.text_buffer import TextBuffer, HistoryGap
from poezio.ui.types import BaseMessage, Message
from poezio.ui.types import (
BaseMessage,
EndOfArchive,
Message,
)
log = logging.getLogger(__name__)
@ -270,6 +274,13 @@ async def on_scroll_up(tab) -> None:
# (InfoTab changes height depending on the type of messages, see
# `information_buffer_popup_on`).
messages = await fetch_history(tab, amount=height)
if tab._text_buffer.messages:
last_message = tab._text_buffer.messages[0]
else:
last_message = None
if not messages and not isinstance(last_message, EndOfArchive):
time = tab._text_buffer.messages[0].time
messages = [EndOfArchive('End of archive reached', time=time)]
tab._text_buffer.add_history_messages(messages)
except NoMAMSupportException:
tab.core.information('MAM not supported for %r' % tab.jid, 'Info')

View file

@ -12,6 +12,7 @@ from poezio.ui.consts import (
)
class BaseMessage:
__slots__ = ('txt', 'time', 'identifier')
@ -27,6 +28,10 @@ class BaseMessage:
return SHORT_FORMAT_LENGTH + 1
class EndOfArchive(BaseMessage):
"""Marker added to a buffer when we reach the end of a MAM archive"""
class InfoMessage(BaseMessage):
def __init__(self, txt: str, identifier: str = '', time: Optional[datetime] = None):
txt = ('\x19%s}' % dump_tuple(get_theme().COLOR_INFORMATION_TEXT)) + txt