mirror of
https://github.com/markqvist/Sideband.git
synced 2026-04-27 14:20:38 +00:00
Fixed message loading performance
This commit is contained in:
parent
cd323c9ca8
commit
6f8f4351f6
3 changed files with 29 additions and 17 deletions
|
|
@ -449,6 +449,7 @@ else:
|
||||||
from ui.objectdetails import ObjectDetails
|
from ui.objectdetails import ObjectDetails
|
||||||
from ui.announces import Announces
|
from ui.announces import Announces
|
||||||
from ui.messages import Messages, ts_format, messages_screen_kv
|
from ui.messages import Messages, ts_format, messages_screen_kv
|
||||||
|
# from ui.messages_recycle import Messages, ts_format, messages_screen_kv
|
||||||
from ui.helpers import ContentNavigationDrawer, DrawerList, IconListItem
|
from ui.helpers import ContentNavigationDrawer, DrawerList, IconListItem
|
||||||
from ui.helpers import multilingual_markup, mdc, dark_theme_text_color
|
from ui.helpers import multilingual_markup, mdc, dark_theme_text_color
|
||||||
from kivymd.toast import toast
|
from kivymd.toast import toast
|
||||||
|
|
|
||||||
|
|
@ -2999,19 +2999,32 @@ class SidebandCore():
|
||||||
with self.db_lock:
|
with self.db_lock:
|
||||||
db = self.__db_connect()
|
db = self.__db_connect()
|
||||||
dbc = db.cursor()
|
dbc = db.cursor()
|
||||||
|
|
||||||
|
base_condition = "(dest=:context_dest or source=:context_dest)"
|
||||||
if after != None and before == None:
|
if after != None and before == None:
|
||||||
query = "select * from lxm where (dest=:context_dest or source=:context_dest) and rx_ts>:after_ts"
|
query = f"select * from lxm where {base_condition} and rx_ts>:after_ts ORDER BY rx_ts DESC"
|
||||||
dbc.execute(query, {"context_dest": context_dest, "after_ts": after})
|
params = {"context_dest": context_dest, "after_ts": after}
|
||||||
|
if limit is not None:
|
||||||
|
query += f" LIMIT :limit_val"; params["limit_val"] = int(limit)
|
||||||
|
dbc.execute(query, params)
|
||||||
elif after == None and before != None:
|
elif after == None and before != None:
|
||||||
query = "select * from lxm where (dest=:context_dest or source=:context_dest) and rx_ts<:before_ts"
|
query = f"select * from lxm where {base_condition} and rx_ts<:before_ts ORDER BY rx_ts DESC"
|
||||||
dbc.execute(query, {"context_dest": context_dest, "before_ts": before})
|
params = {"context_dest": context_dest, "before_ts": before}
|
||||||
|
if limit is not None:
|
||||||
|
query += f" LIMIT :limit_val"; params["limit_val"] = int(limit)
|
||||||
|
dbc.execute(query, params)
|
||||||
elif after != None and before != None:
|
elif after != None and before != None:
|
||||||
query = "select * from lxm where (dest=:context_dest or source=:context_dest) and rx_ts<:before_ts and rx_ts>:after_ts"
|
query = f"select * from lxm where {base_condition} and rx_ts<:before_ts and rx_ts>:after_ts ORDER BY rx_ts DESC"
|
||||||
dbc.execute(query, {"context_dest": context_dest, "before_ts": before, "after_ts": after})
|
params = {"context_dest": context_dest, "before_ts": before, "after_ts": after}
|
||||||
|
if limit is not None:
|
||||||
|
query += f" LIMIT :limit_val"; params["limit_val"] = int(limit)
|
||||||
|
dbc.execute(query, params)
|
||||||
else:
|
else:
|
||||||
query = "select * from lxm where dest=:context_dest or source=:context_dest"
|
query = f"select * from lxm where {base_condition} ORDER BY rx_ts DESC"
|
||||||
dbc.execute(query, {"context_dest": context_dest})
|
params = {"context_dest": context_dest}
|
||||||
|
if limit is not None:
|
||||||
|
query += f" LIMIT :limit_val"; params["limit_val"] = int(limit)
|
||||||
|
dbc.execute(query, params)
|
||||||
|
|
||||||
result = dbc.fetchall()
|
result = dbc.fetchall()
|
||||||
|
|
||||||
|
|
@ -3034,10 +3047,8 @@ class SidebandCore():
|
||||||
lxm.paper_packed = paper_packed_lxm
|
lxm.paper_packed = paper_packed_lxm
|
||||||
|
|
||||||
extras = None
|
extras = None
|
||||||
try:
|
try: extras = msgpack.unpackb(entry[11])
|
||||||
extras = msgpack.unpackb(entry[11])
|
except: pass
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
message = {
|
message = {
|
||||||
"hash": lxm.hash,
|
"hash": lxm.hash,
|
||||||
|
|
@ -3054,8 +3065,9 @@ class SidebandCore():
|
||||||
}
|
}
|
||||||
|
|
||||||
messages.append(message)
|
messages.append(message)
|
||||||
if len(messages) > limit:
|
|
||||||
messages = messages[-limit:]
|
messages.reverse()
|
||||||
|
if len(messages) > limit: messages = messages[-limit:]
|
||||||
return messages
|
return messages
|
||||||
|
|
||||||
def _db_save_lxm(self, lxm, context_dest, originator = False, own_command = False, is_retry = False):
|
def _db_save_lxm(self, lxm, context_dest, originator = False, own_command = False, is_retry = False):
|
||||||
|
|
|
||||||
|
|
@ -271,8 +271,7 @@ class Messages():
|
||||||
else: self.hide_widget(self.ids.message_ptt, True)
|
else: self.hide_widget(self.ids.message_ptt, True)
|
||||||
|
|
||||||
c_ts = time.time()
|
c_ts = time.time()
|
||||||
if len(self.new_messages) > 0:
|
if len(self.new_messages) > 0: self.update_widget()
|
||||||
self.update_widget()
|
|
||||||
|
|
||||||
if (len(self.added_item_hashes) < self.db_message_count) and not self.load_more_button in self.list.children:
|
if (len(self.added_item_hashes) < self.db_message_count) and not self.load_more_button in self.list.children:
|
||||||
self.list.add_widget(self.load_more_button, len(self.list.children))
|
self.list.add_widget(self.load_more_button, len(self.list.children))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue