Focus textbox. Updated pagination.

This commit is contained in:
retoor 2025-02-17 13:37:05 +01:00
parent 2e69ac5921
commit 8c33bc63d6
3 changed files with 14 additions and 5 deletions

View File

@ -51,12 +51,20 @@ class ChannelMessageService(BaseService):
"username": user['username'] "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 = [] results = []
offset = page * page_size offset = page * page_size
try: try:
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)): 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) 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: except:
pass pass
results.sort(key=lambda x: x['created_at']) results.sort(key=lambda x: x['created_at'])

View File

@ -38,6 +38,7 @@
} }
} }
}); });
textBox.focus();
} }
function updateTimes() { function updateTimes() {

View File

@ -71,10 +71,10 @@ class RPCView(BaseView):
del record['email'] del record['email']
return record 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() self._require_login()
messages = [] 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) extended_dict = await self.services.channel_message.to_extended_dict(message)
messages.append(extended_dict) messages.append(extended_dict)
return messages return messages