Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
f55a0127 by wurstsalat at 2021-12-11T20:30:07+01:00
(Re)store unread counts

- - - - -


4 changed files:

- gajim/common/storage/cache.py
- gajim/gtk/chat_list.py
- gajim/gtk/chat_list_stack.py
- gajim/gtk/main.py


Changes:

=====================================
gajim/common/storage/cache.py
=====================================
@@ -317,6 +317,11 @@ def get_contact(self, jid, prop):
             # TODO: Expire entries
             return value
 
+    @timeit
+    def get_unread(self):
+        sql = 'SELECT * FROM unread'
+        return self._con.execute(sql).fetchall()
+
     @timeit
     def get_unread_count(self, account, jid):
         sql = '''SELECT count, message_id, timestamp FROM unread
@@ -325,10 +330,14 @@ def get_unread_count(self, account, jid):
 
     @timeit
     def set_unread_count(self, account, jid, count, message_id, timestamp):
-        sql = '''INSERT INTO unread (account, jid, count, message_id, 
timestamp)
-                 VALUES (?, ?, ?, ?, ?)'''
-        self._con.execute(sql, (account, jid, count, message_id, timestamp))
-        self._delayed_commit()
+        if self.get_unread_count(account, jid) is not None:
+            self.update_unread_count(account, jid, count)
+        else:
+            sql = '''INSERT INTO unread
+                     (account, jid, count, message_id, timestamp)
+                     VALUES (?, ?, ?, ?, ?)'''
+            self._con.execute(sql, (account, jid, count, message_id, 
timestamp))
+            self._delayed_commit()
 
     @timeit
     def update_unread_count(self, account, jid, count):


=====================================
gajim/gtk/chat_list.py
=====================================
@@ -113,6 +113,15 @@ def get_chat_unread_count(self,
             return chat.unread_count
         return None
 
+    def set_chat_unread_count(self,
+                              account: str,
+                              jid: JID,
+                              count: int
+                              ) -> None:
+        chat = self._chats.get((account, jid))
+        if chat is not None:
+            chat.unread_count = count
+
     def mark_as_read(self, account: str, jid: JID) -> None:
         chat = self._chats.get((account, jid))
         if chat is not None:
@@ -744,6 +753,12 @@ def add_unread(self, text: str) -> None:
         self._unread_count += 1
         self._update_unread()
         self.get_parent().emit_unread_changed()
+        app.storage.cache.set_unread_count(
+            self.account,
+            self.jid,
+            self.get_real_unread_count(),
+            self.message_id,
+            self.timestamp)
 
         if self.contact.is_groupchat:
             needs_highlight = message_needs_highlight(
@@ -758,6 +773,7 @@ def reset_unread(self) -> None:
         self._unread_count = 0
         self._update_unread()
         self.get_parent().emit_unread_changed()
+        app.storage.cache.reset_unread_count(self.account, self.jid)
 
         # Add class again in case we were mentioned previously
         if self.contact.is_groupchat and not self.contact.can_notify():


=====================================
gajim/gtk/chat_list_stack.py
=====================================
@@ -260,6 +260,14 @@ def get_chat_unread_count(self,
                 return count
         return None
 
+    def set_chat_unread_count(self,
+                              account: str,
+                              jid: JID,
+                              count: int
+                              ) -> None:
+        for chat_list in self._chat_lists.values():
+            chat_list.set_chat_unread_count(account, jid, count)
+
     def mark_as_read(self, account: str, jid: JID) -> None:
         for chat_list in self._chat_lists.values():
             chat_list.mark_as_read(account, jid)


=====================================
gajim/gtk/main.py
=====================================
@@ -123,6 +123,7 @@ def __init__(self):
 
         self._check_for_account()
         self._load_chats()
+        self._load_unread_counts()
         self._add_actions()
         self._add_actions2()
 
@@ -332,6 +333,16 @@ def _set_startup_finished(self):
         self._startup_finished = True
         self._chat_page.set_startup_finished()
 
+    def _load_unread_counts(self) -> None:
+        chats = app.storage.cache.get_unread()
+        chat_list_stack = self._chat_page.get_chat_list_stack()
+
+        for chat in chats:
+            chat_list_stack.set_chat_unread_count(
+                chat.account,
+                chat.jid,
+                chat.count)
+
     def show_account_page(self, account: str) -> None:
         self._app_side_bar.unselect_all()
         self._workspace_side_bar.unselect_all()



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/f55a012764a1a4e0da7bc7b34441fc0c0e9959e4

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/f55a012764a1a4e0da7bc7b34441fc0c0e9959e4
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to