summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--poezio/mam.py13
-rw-r--r--poezio/ui/types.py5
2 files changed, 17 insertions, 1 deletions
diff --git a/poezio/mam.py b/poezio/mam.py
index 05275975..6882ef7a 100644
--- a/poezio/mam.py
+++ b/poezio/mam.py
@@ -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')
diff --git a/poezio/ui/types.py b/poezio/ui/types.py
index 34924112..15117275 100644
--- a/poezio/ui/types.py
+++ b/poezio/ui/types.py
@@ -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