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


Commits:
1e47ee1b by wurstsalat at 2021-11-14T18:37:39+01:00
StartChat: Remove history when forgetting group chat

- - - - -


2 changed files:

- gajim/app_actions.py
- gajim/common/storage/archive.py


Changes:

=====================================
gajim/app_actions.py
=====================================
@@ -28,6 +28,7 @@
 from gajim.gui.about import AboutDialog
 from gajim.gui.discovery import ServiceDiscoveryWindow
 from gajim.gui.util import open_window
+from gajim.gui.util import get_app_window
 
 # General Actions
 
@@ -266,10 +267,16 @@ def start_chat(_action, param):
 
 def forget_groupchat(_action, param):
     account, jid = param.unpack()
+    room_jid = JID.from_string(jid)
+    window = get_app_window('StartChatDialog')
+    window.remove_row(account, str(room_jid))
+
     client = app.get_client(account)
-    client.get_module('Bookmarks').remove(JID.from_string(jid))
-    window = open_window('StartChatDialog')
-    window.remove_row(account, jid)
+    client.get_module('MUC').leave(room_jid)
+    client.get_module('Bookmarks').remove(room_jid)
+
+    app.storage.archive.remove_chat_history(
+        account, str(room_jid), groupchat=True)
 
 def on_groupchat_join(_action, param):
     account, jid = param.get_strv()


=====================================
gajim/common/storage/archive.py
=====================================
@@ -1192,6 +1192,27 @@ def reset_archive_infos(self, jid):
         log.info('Reset message archive info: %s', jid)
         self._delayed_commit()
 
+    def remove_chat_history(self, account: str, jid: str,
+                            groupchat: bool = False) -> None:
+        """
+        Remove chat history for a specific chat.
+        If it's a group chat, remove last MAM ID as well.
+        """
+        account_id = self.get_account_id(account)
+        jid_id = self.get_jid_id(jid)
+        sql = 'DELETE FROM logs WHERE account_id = ? AND jid_id = ?'
+        self._con.execute(sql, (account_id, jid_id))
+
+        sql = 'DELETE FROM jids WHERE jid_id = ?'
+        self._con.execute(sql, (jid_id,))
+
+        if groupchat:
+            sql = 'DELETE FROM last_archive_message WHERE jid_id = ?'
+            self._con.execute(sql, (jid_id,))
+
+        self._delayed_commit()
+        log.info('Removed chat history for: %s', jid)
+
     def _cleanup_chat_history(self):
         """
         Remove messages from account where messages are older than max_age



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

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