changeset 1e80e2fdff27 in /home/hg/repos/gajim-plugins

author: lovetox <[email protected]>
branches: 
details:gajim-plugins?cmd=changeset;node=1e80e2fdff27
description: show current OMEMO encryption state in chat Window

diffstat:

 omemo/__init__.py |  19 ++++++++++++++++---
 omemo/ui.py       |  29 ++++++++++++++++++++---------
 2 files changed, 36 insertions(+), 12 deletions(-)

diffs (78 lines):

diff -r 9f2826c1f9f4 -r 1e80e2fdff27 omemo/__init__.py
--- a/omemo/__init__.py Sat May 28 17:33:52 2016 +0200
+++ b/omemo/__init__.py Sun May 29 13:06:19 2016 +0200
@@ -164,11 +164,24 @@
         elif msg.stanza.getTag('body') and \
                 msg.stanza.getType() == 'chat':
             account = msg.conn.name
+
             from_jid = str(msg.stanza.getAttr('from'))
             jid = gajim.get_jid_without_resource(from_jid)
-            gui = self.ui_list[account].get(jid, None)
-            if gui and gui.encryption_active():
-                gui.plain_warning()
+            state = self.get_omemo_state(account)
+            omemo_enabled = state.encryption.is_active(jid)
+
+            if omemo_enabled:
+                plaintext = msg.stanza.getBody()
+                msg.msgtxt = '**Unencrypted** ' + plaintext
+                msg.stanza.setBody(msg.msgtxt)
+
+                try:
+                    gui = self.ui_list[account].get(jid, None)
+                    if gui and gui.encryption_active():
+                        gui.plain_warning()
+                except:
+                    log.debug('No Ui present for ' + jid +
+                              ', Ui Warning not shown')
 
     @log_calls('OmemoPlugin')
     def handle_device_list_update(self, event):
diff -r 9f2826c1f9f4 -r 1e80e2fdff27 omemo/ui.py
--- a/omemo/ui.py       Sat May 28 17:33:52 2016 +0200
+++ b/omemo/ui.py       Sun May 29 13:06:19 2016 +0200
@@ -105,23 +105,34 @@
 class Ui(object):
 
     def __init__(self, plugin, chat_control, enabled):
-        contact = chat_control.contact
-        self.prekey_button = PreKeyButton(plugin, contact)
+        self.contact = chat_control.contact
+        self.chat_control = chat_control
+        self.prekey_button = PreKeyButton(plugin, self.contact)
         self.checkbox = Checkbox(plugin, chat_control)
-        self.clear_button = ClearDevicesButton(plugin, contact)
+        self.clear_button = ClearDevicesButton(plugin, self.contact)
 
-        self.checkbox.set_active(enabled)
-        self.chat_control = chat_control
+        if enabled:
+            self.checkbox.set_active(True)
+        else:
+            self.encryption_disable()
 
-        _add_widget(self.prekey_button, chat_control)
-        _add_widget(self.checkbox, chat_control)
-        _add_widget(self.clear_button, chat_control)
+        _add_widget(self.prekey_button, self.chat_control)
+        _add_widget(self.checkbox, self.chat_control)
+        _add_widget(self.clear_button, self.chat_control)
 
     def encryption_active(self):
         return self.checkbox.get_active()
 
     def encryption_disable(self):
-        return self.checkbox.set_active(False)
+        if self.checkbox.get_active():
+            self.checkbox.set_active(False)
+        else:
+            log.info(self.contact.account.name + ' ⇒ Disable OMEMO for ' +
+                     self.contact.jid)
+            self.chat_control._show_lock_image(False, 'OMEMO', False, True,
+                                               False)
+            self.chat_control.print_conversation_line(
+                u'OMEMO encryption disabled', 'status', '', None)
 
     def activate_omemo(self):
         if not self.checkbox.get_active():
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to