From 8c33bc63d6cc623d0782f14c96a42c612accbc75 Mon Sep 17 00:00:00 2001 From: retoor Date: Mon, 17 Feb 2025 13:37:05 +0100 Subject: [PATCH] Focus textbox. Updated pagination. --- src/snek/service/channel_message.py | 14 +++++++++++--- src/snek/templates/web.html | 1 + src/snek/view/rpc.py | 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/snek/service/channel_message.py b/src/snek/service/channel_message.py index c421b5e..953881e 100644 --- a/src/snek/service/channel_message.py +++ b/src/snek/service/channel_message.py @@ -51,12 +51,20 @@ class ChannelMessageService(BaseService): "username": user['username'] } - async def offset(self, channel_uid, page=0, page_size=30): + async def offset(self, channel_uid, page=0, timestamp = None, page_size=30): results = [] offset = page * page_size try: - async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset)): - results.append(model) + if not timestamp: + async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset)): + results.append(model) + elif page >= 0: + async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid WHERE created_at > :timestamp ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset,timestamp=timestamp )): + results.append(model) + else: + async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid WHERE created_at < :timestamp ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset,timestamp=timestamp )): + results.append(model) + except: pass results.sort(key=lambda x: x['created_at']) diff --git a/src/snek/templates/web.html b/src/snek/templates/web.html index ee67a7c..34972e7 100644 --- a/src/snek/templates/web.html +++ b/src/snek/templates/web.html @@ -38,6 +38,7 @@ } } }); + textBox.focus(); } function updateTimes() { diff --git a/src/snek/view/rpc.py b/src/snek/view/rpc.py index 06d903c..07893e1 100644 --- a/src/snek/view/rpc.py +++ b/src/snek/view/rpc.py @@ -71,10 +71,10 @@ class RPCView(BaseView): del record['email'] return record - async def get_messages(self, channel_uid, offset=0): + async def get_messages(self, channel_uid, offset=0,timestamp = None): self._require_login() messages = [] - for message in await self.services.channel_message.offset(channel_uid, offset): + for message in await self.services.channel_message.offset(channel_uid, offset or 0,timestamp or None): extended_dict = await self.services.channel_message.to_extended_dict(message) messages.append(extended_dict) return messages