ability to connect to a server that doesn't support roster, and hide the correcponding features. Fixes #6745
This commit is contained in:
parent
9e79f9d437
commit
b6e26061fe
|
@ -1669,7 +1669,8 @@ class ChatControl(ChatControlBase):
|
||||||
|
|
||||||
# Add to roster
|
# Add to roster
|
||||||
if not isinstance(self.contact, GC_Contact) \
|
if not isinstance(self.contact, GC_Contact) \
|
||||||
and _('Not in Roster') in self.contact.groups:
|
and _('Not in Roster') in self.contact.groups and \
|
||||||
|
gajim.connections[self.account].roster_supported:
|
||||||
self._add_to_roster_button.show()
|
self._add_to_roster_button.show()
|
||||||
else:
|
else:
|
||||||
self._add_to_roster_button.hide()
|
self._add_to_roster_button.hide()
|
||||||
|
|
|
@ -155,6 +155,7 @@ class CommonConnection:
|
||||||
self.private_storage_supported = False
|
self.private_storage_supported = False
|
||||||
self.archiving_supported = False
|
self.archiving_supported = False
|
||||||
self.archive_pref_supported = False
|
self.archive_pref_supported = False
|
||||||
|
self.roster_supported = True
|
||||||
|
|
||||||
self.muc_jid = {} # jid of muc server for each transport type
|
self.muc_jid = {} # jid of muc server for each transport type
|
||||||
self._stun_servers = [] # STUN servers of our jabber server
|
self._stun_servers = [] # STUN servers of our jabber server
|
||||||
|
@ -511,14 +512,14 @@ class CommonConnection:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def update_contact(self, jid, name, groups):
|
def update_contact(self, jid, name, groups):
|
||||||
if self.connection:
|
if self.connection and self.roster_supported:
|
||||||
self.connection.getRoster().setItem(jid=jid, name=name, groups=groups)
|
self.connection.getRoster().setItem(jid=jid, name=name, groups=groups)
|
||||||
|
|
||||||
def update_contacts(self, contacts):
|
def update_contacts(self, contacts):
|
||||||
"""
|
"""
|
||||||
Update multiple roster items
|
Update multiple roster items
|
||||||
"""
|
"""
|
||||||
if self.connection:
|
if self.connection and self.roster_supported:
|
||||||
self.connection.getRoster().setItemMulti(contacts)
|
self.connection.getRoster().setItemMulti(contacts)
|
||||||
|
|
||||||
def new_account(self, name, config, sync=False):
|
def new_account(self, name, config, sync=False):
|
||||||
|
|
|
@ -550,6 +550,15 @@ class ConnectionVcard:
|
||||||
roster = self.connection.getRoster(force=True)
|
roster = self.connection.getRoster(force=True)
|
||||||
roster.setRaw(roster_data)
|
roster.setRaw(roster_data)
|
||||||
self._getRoster()
|
self._getRoster()
|
||||||
|
elif iq_obj.getType() == 'error':
|
||||||
|
self.roster_supported = False
|
||||||
|
self.discoverItems(gajim.config.get_per('accounts', self.name,
|
||||||
|
'hostname'), id_prefix='Gajim_')
|
||||||
|
if gajim.config.get_per('accounts', self.name,
|
||||||
|
'use_ft_proxies'):
|
||||||
|
self.discover_ft_proxies()
|
||||||
|
gajim.nec.push_incoming_event(RosterReceivedEvent(None,
|
||||||
|
conn=self))
|
||||||
elif self.awaiting_answers[id_][0] == PRIVACY_ARRIVED:
|
elif self.awaiting_answers[id_][0] == PRIVACY_ARRIVED:
|
||||||
if iq_obj.getType() != 'error':
|
if iq_obj.getType() != 'error':
|
||||||
self.privacy_rules_supported = True
|
self.privacy_rules_supported = True
|
||||||
|
|
|
@ -915,9 +915,10 @@ class ConversationTextview(gobject.GObject):
|
||||||
self.on_join_group_chat_menuitem_activate, text)
|
self.on_join_group_chat_menuitem_activate, text)
|
||||||
self.handlers[id_] = childs[6]
|
self.handlers[id_] = childs[6]
|
||||||
|
|
||||||
if self.account:
|
if self.account and gajim.connections[self.account].\
|
||||||
id_ = childs[7].connect('activate', self.on_add_to_roster_activate,
|
roster_supported:
|
||||||
text)
|
id_ = childs[7].connect('activate',
|
||||||
|
self.on_add_to_roster_activate, text)
|
||||||
self.handlers[id_] = childs[7]
|
self.handlers[id_] = childs[7]
|
||||||
childs[7].show() # show add to roster menuitem
|
childs[7].show() # show add to roster menuitem
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -2398,7 +2398,8 @@ class GroupchatControl(ChatControlBase):
|
||||||
|
|
||||||
item = xml.get_object('add_to_roster_menuitem')
|
item = xml.get_object('add_to_roster_menuitem')
|
||||||
our_jid = gajim.get_jid_from_account(self.account)
|
our_jid = gajim.get_jid_from_account(self.account)
|
||||||
if not jid or jid == our_jid:
|
if not jid or jid == our_jid or not gajim.connections[self.account].\
|
||||||
|
roster_supported:
|
||||||
item.set_sensitive(False)
|
item.set_sensitive(False)
|
||||||
else:
|
else:
|
||||||
id_ = item.connect('activate', self.on_add_to_roster, jid)
|
id_ = item.connect('activate', self.on_add_to_roster, jid)
|
||||||
|
|
|
@ -425,13 +425,17 @@ control=None, gc_contact=None):
|
||||||
revoke_auth_menuitem.connect('activate', roster.revoke_auth, jid,
|
revoke_auth_menuitem.connect('activate', roster.revoke_auth, jid,
|
||||||
account)
|
account)
|
||||||
|
|
||||||
else:
|
elif gajim.connections[account].roster_supported:
|
||||||
# contact is in group 'Not in Roster'
|
# contact is in group 'Not in Roster'
|
||||||
add_to_roster_menuitem.set_no_show_all(False)
|
add_to_roster_menuitem.set_no_show_all(False)
|
||||||
subscription_menuitem.set_sensitive(False)
|
subscription_menuitem.set_sensitive(False)
|
||||||
|
|
||||||
add_to_roster_menuitem.connect('activate', roster.on_add_to_roster,
|
add_to_roster_menuitem.connect('activate', roster.on_add_to_roster,
|
||||||
contact, account)
|
contact, account)
|
||||||
|
else:
|
||||||
|
add_to_roster_menuitem.hide()
|
||||||
|
add_to_roster_menuitem.set_no_show_all(True)
|
||||||
|
subscription_menuitem.set_sensitive(False)
|
||||||
|
|
||||||
set_custom_avatar_menuitem.connect('activate',
|
set_custom_avatar_menuitem.connect('activate',
|
||||||
roster.on_set_custom_avatar_activate, contact, account)
|
roster.on_set_custom_avatar_activate, contact, account)
|
||||||
|
|
|
@ -5396,8 +5396,11 @@ class RosterWindow:
|
||||||
|
|
||||||
edit_account_menuitem.connect('activate', self.on_edit_account,
|
edit_account_menuitem.connect('activate', self.on_edit_account,
|
||||||
account)
|
account)
|
||||||
add_contact_menuitem.connect('activate', self.on_add_new_contact,
|
if gajim.connections[account].roster_supported:
|
||||||
account)
|
add_contact_menuitem.connect('activate',
|
||||||
|
self.on_add_new_contact, account)
|
||||||
|
else:
|
||||||
|
add_contact_menuitem.set_sensitive(False)
|
||||||
service_discovery_menuitem.connect('activate',
|
service_discovery_menuitem.connect('activate',
|
||||||
self.on_service_disco_menuitem_activate, account)
|
self.on_service_disco_menuitem_activate, account)
|
||||||
hostname = gajim.config.get_per('accounts', account, 'hostname')
|
hostname = gajim.config.get_per('accounts', account, 'hostname')
|
||||||
|
|
Loading…
Reference in New Issue