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