changeset e72d2b833933 in /home/hg/repos/gajim-plugins

author: lovetox <[email protected]>
branches: 
details:gajim-plugins?cmd=changeset;node=e72d2b833933
description: Removing "GetDeviceKey" Button & fetch keys automatically

diffstat:

 omemo/__init__.py |  49 +++++++++++++++----------------------------------
 omemo/ui.py       |  28 ----------------------------
 2 files changed, 15 insertions(+), 62 deletions(-)

diffs (176 lines):

diff -r 4e4d0772ade4 -r e72d2b833933 omemo/__init__.py
--- a/omemo/__init__.py Thu Jun 02 21:36:13 2016 +0200
+++ b/omemo/__init__.py Fri Jun 03 18:24:20 2016 +0200
@@ -150,9 +150,6 @@
                 return
 
             msg.msgtxt = plaintext
-            # msg.msg_.setBody(plaintext)
-
-            # self.update_prekeys(account, msg_dict['sender_jid'])
 
             contact_jid = msg.with_
 
@@ -170,7 +167,6 @@
 
             if omemo_enabled:
                 msg.msgtxt = '**Unencrypted** ' + msg.msgtxt
-                # msg.msg_.setBody(msg.msgtxt)  # why do i need this?
 
                 try:
                     gui = self.ui_list[account].get(jid, None)
@@ -206,8 +202,6 @@
             # bug? there must be a body or the message gets dropped from 
history
             msg.stanza.setBody(plaintext)
 
-            self.update_prekeys(account, msg_dict['sender_jid'])
-
             contact_jid = gajim.get_jid_without_resource(from_jid)
             if account in self.ui_list and \
                     contact_jid in self.ui_list[account]:
@@ -291,7 +285,8 @@
                 if chat_control is not None:
                     self.connect_ui(chat_control)
 
-        self.update_prekeys(account_name, contact_jid)
+        # Look if Device Keys are missing and fetch them
+        self.are_keys_missing(account_name, contact_jid)
 
         return True
 
@@ -323,18 +318,19 @@
         else:
             log.warn(account_name + " ⇒ No OMEMO dev_keys for " + contact_jid)
 
-    def are_keys_missing(self, contact):
+    def are_keys_missing(self, account_name, contact_jid):
         """ Used by the ui to set the state of the PreKeyButton. """
-        account = contact.account.name
-        my_jid = gajim.get_jid_from_account(account)
-        state = self.get_omemo_state(account)
+
+        my_jid = gajim.get_jid_from_account(account_name)
+        state = self.get_omemo_state(account_name)
         result = 0
-        result += len(state.devices_without_sessions(str(contact.jid)))
+        result += len(state.devices_without_sessions(str(contact_jid)))
         result += len(state.own_devices_without_sessions(my_jid))
         if result > 0:
-            log.warn(account + " ⇒ Missing keys for " + contact.jid + ": " +
+            log.warn(account_name + " ⇒ Missing keys for " + contact_jid + ": 
" +
                      str(result))
-        return result
+            log.warn('query keys now ...')
+            self.query_prekey(account_name, contact_jid)
 
     @log_calls('OmemoPlugin')
     def handle_iq_received(self, event):
@@ -349,13 +345,13 @@
                 del iq_ids_to_callbacks[id_]
 
     @log_calls('OmemoPlugin')
-    def query_prekey(self, recipient):
+    def query_prekey(self, account_name, contact_jid):
         """ Calls OmemoPlugin.fetch_device_bundle_information() for each own or
             recipient device key missing.
         """
-        account = recipient.account.name
+        account = account_name
         state = self.get_omemo_state(account)
-        to_jid = recipient.jid
+        to_jid = contact_jid
         my_jid = gajim.get_jid_from_account(account)
         for device_id in state.devices_without_sessions(to_jid):
             self.fetch_device_bundle_information(account, state, to_jid,
@@ -399,8 +395,7 @@
 
 
             This method tries to build an axolotl session when a PreKey bundle
-            is fetched. If building the axolotl session is successful it tries
-            to update the ui by calling `self.update_prekeys()`.
+            is fetched.
 
             If a session can not be build it will fail silently but log the a
             warning.
@@ -433,21 +428,7 @@
             return
 
         if state.build_session(recipient_id, device_id, bundle_dict):
-            self.update_prekeys(account_name, recipient_id)
-
-    @log_calls('OmemoPlugin')
-    def update_prekeys(self, account, recipient_id):
-        """ Updates the "Get Prekeys" Button in the ui.
-            Parameters:
-            ----------
-            account : str
-                The account name
-            recipient_id : str
-                The recipient jid
-        """
-        if account in self.ui_list:
-            if recipient_id in self.ui_list[account]:
-                self.ui_list[account][recipient_id].update_prekeys()
+            log.warn(recipient_id + ' => session created')
 
     @log_calls('OmemoPlugin')
     def announce_support(self, account):
diff -r 4e4d0772ade4 -r e72d2b833933 omemo/ui.py
--- a/omemo/ui.py       Thu Jun 02 21:36:13 2016 +0200
+++ b/omemo/ui.py       Fri Jun 03 18:24:20 2016 +0200
@@ -31,29 +31,6 @@
 # from plugins.helpers import log
 
 
-class PreKeyButton(gtk.Button):
-    def __init__(self, plugin, contact):
-        super(PreKeyButton, self).__init__(label='Get Device Keys' + str(
-            plugin.are_keys_missing(contact)))
-        self.plugin = plugin
-        self.contact = contact
-        self.connect('clicked', self.on_click)
-        self.refresh()
-
-    def refresh(self):
-        amount = self.plugin.are_keys_missing(self.contact)
-        if amount == 0:
-            self.set_no_show_all(True)
-            self.hide()
-        else:
-            self.set_no_show_all(False)
-            self.show()
-        self.set_label('Get Device Keys ' + str(amount))
-
-    def on_click(self, widget):
-        self.plugin.query_prekey(self.contact)
-
-
 class ClearDevicesButton(gtk.Button):
     def __init__(self, plugin, contact):
         super(ClearDevicesButton, self).__init__(label='Clear Devices')
@@ -107,7 +84,6 @@
     def __init__(self, plugin, chat_control, enabled):
         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, self.contact)
 
@@ -116,7 +92,6 @@
         else:
             self.encryption_disable()
 
-        _add_widget(self.prekey_button, self.chat_control)
         _add_widget(self.checkbox, self.chat_control)
         _add_widget(self.clear_button, self.chat_control)
 
@@ -143,9 +118,6 @@
             'Received plaintext message! ' +
             'Your next message will still be encrypted!', 'status', '', None)
 
-    def update_prekeys(self):
-        self.prekey_button.refresh()
-
 
 class OMEMOConfigDialog(GajimPluginConfigDialog):
     def init(self):
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to