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/6e30d3af6473d41de42f1d60cd0363215b...