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

Commits:
4e814dab by Philipp Hörist at 2018-12-10T21:30:37Z
Fix disabled join groupchat menu

When there are no bookmarks on the server the join groupchat menu
was disabled, preventing the user to open the join groupchat dialog

- - - - -
be420d44 by Philipp Hörist at 2018-12-10T21:30:45Z
Implement XEP-0411 Bookmarks Conversion

If bookmarks conversion is announced by the server:

- Dont merge bookmarks
- Only push to either private storage or pubsub

- - - - -


4 changed files:

- gajim/common/modules/bookmarks.py
- gajim/groupchat_control.py
- gajim/gtk/join_groupchat.py
- gajim/gui_menu_builder.py


Changes:

=====================================
gajim/common/modules/bookmarks.py
=====================================
@@ -38,7 +38,6 @@ class Bookmarks:
         self._account = con.name
         self.bookmarks = {}
         self.conversion = False
-        self.available = False
 
         self.handlers = []
 
@@ -96,14 +95,18 @@ class Bookmarks:
     def _pubsub_bookmarks_received(self, _con, stanza):
         if not nbxmpp.isResultNode(stanza):
             log.info('No pubsub bookmarks: %s', stanza.getError())
-            # Fallback, request private storage
-            self._request_private_bookmarks()
+            # Fallback, request private storage, only if server
+            # doesnt have bookmark conversion
+            if not self.conversion:
+                self._request_private_bookmarks()
             return
 
-        self.available = True
         log.info('Received Bookmarks (PubSub)')
         self._parse_bookmarks(stanza)
-        self._request_private_bookmarks()
+        if not self.conversion:
+            # If server does not have bookmark conversion, request private
+            # storage and try to merge the bookmarks
+            self._request_private_bookmarks()
 
     def _request_private_bookmarks(self) -> None:
         if not app.account_is_connected(self._account):
@@ -120,7 +123,6 @@ class Bookmarks:
         if not nbxmpp.isResultNode(stanza):
             log.info('No private bookmarks: %s', stanza.getError())
         else:
-            self.available = True
             log.info('Received Bookmarks (PrivateStorage)')
             merged = self._parse_bookmarks(stanza, check_merge=True)
             if merged and self._pubsub_support():
@@ -264,6 +266,9 @@ class Bookmarks:
         if storage_type is None:
             if self._pubsub_support():
                 self._pubsub_store(storage_node)
+                if self.conversion:
+                    # Only push to either pubsub or private storage
+                    return
             self._private_store(storage_node)
         elif storage_type == BookmarkStorageType.PUBSUB:
             if self._pubsub_support():


=====================================
gajim/groupchat_control.py
=====================================
@@ -419,10 +419,9 @@ class GroupchatControl(ChatControlBase):
 
         # Bookmarks
         con = app.connections[self.account]
-        bookmark_support = con.get_module('Bookmarks').available
         bookmarked = self.room_jid in con.get_module('Bookmarks').bookmarks
         win.lookup_action('bookmark-' + self.control_id).set_enabled(
-            self.is_connected and bookmark_support and not bookmarked)
+            self.is_connected and not bookmarked)
 
         # Request Voice
         role = self.get_role(self.nick)


=====================================
gajim/gtk/join_groupchat.py
=====================================
@@ -113,10 +113,6 @@ class JoinGroupchatWindow(Gtk.ApplicationWindow):
 
         # Set bookmark switch sensitive if server supports bookmarks
         acc = self.account_combo.get_active_id()
-        con = app.connections[acc]
-        if not con.get_module('Bookmarks').available:
-            self.bookmark_switch.set_sensitive(False)
-            self.autojoin_switch.set_sensitive(False)
 
         self.show_all()
 


=====================================
gajim/gui_menu_builder.py
=====================================
@@ -714,10 +714,8 @@ def get_groupchat_menu(control_id, account, jid):
 
 def get_bookmarks_menu(account, rebuild=False):
     con = app.connections[account]
-    boomarks = con.get_module('Bookmarks').get_sorted_bookmarks(
-        short_name=True)
-    if not boomarks:
-        return None
+    boomarks = 
con.get_module('Bookmarks').get_sorted_bookmarks(short_name=True)
+
     menu = Gio.Menu()
 
     # Build Join Groupchat



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/compare/6e30d3af6473d41de42f1d60cd0363215b6ce321...be420d44fca26db71a153c6c078d2df4b47f0944

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/compare/6e30d3af6473d41de42f1d60cd0363215b6ce321...be420d44fca26db71a153c6c078d2df4b47f0944
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