Philipp Hörist pushed to branch master at gajim / gajim


Commits:
0ecae706 by mjk at 2023-05-09T18:47:24+00:00
imprv: Notifications: Withdraw all when a corresponding chat is read

Fixes #11030

- - - - -


3 changed files:

- gajim/common/events.py
- gajim/gtk/chat_list.py
- gajim/gtk/notification.py


Changes:

=====================================
gajim/common/events.py
=====================================
@@ -122,6 +122,13 @@ class Notification(ApplicationEvent):
     icon_name: Optional[str] = None
 
 
+@dataclass
+class ChatRead(ApplicationEvent):
+    name: str = field(init=False, default='chat-read')
+    account: str
+    jid: JID
+
+
 @dataclass
 class StanzaSent(ApplicationEvent):
     name: str = field(init=False, default='stanza-sent')


=====================================
gajim/gtk/chat_list.py
=====================================
@@ -163,8 +163,9 @@ def get_open_chats(self) -> OpenChatsSettingT:
 
     def mark_as_read(self, account: str, jid: JID) -> None:
         chat = self._chats.get((account, jid))
-        if chat is not None:
+        if chat is not None and chat.get_real_unread_count() > 0:
             chat.reset_unread()
+            app.ged.raise_event(events.ChatRead(account=account, jid=jid))
 
     def toggle_chat_pinned(self, account: str, jid: JID) -> None:
         row = self._chats[(account, jid)]


=====================================
gajim/gtk/notification.py
=====================================
@@ -83,7 +83,8 @@ def __init__(self) -> None:
 
         self.register_events([
             ('notification', ged.GUI2, self._on_notification),
-            ('account-enabled', ged.GUI2, self._on_account_enabled)
+            ('account-enabled', ged.GUI2, self._on_account_enabled),
+            ('chat-read', ged.GUI2, self._on_chat_read)
         ])
 
         for client in app.get_clients():
@@ -111,6 +112,9 @@ def _on_account_enabled(self, event: events.AccountEnabled) 
-> None:
         client = app.get_client(event.account)
         client.connect_signal('state-changed', self._on_client_state_changed)
 
+    def _on_chat_read(self, event: events.ChatRead) -> None:
+        self._withdraw(['new-message', event.account, event.jid])
+
     def _on_client_state_changed(self,
                                  client: Client,
                                  _signal_name: str,



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

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/0ecae706ca7fc094398be32d28b393b77c3bfa97
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