Add blocked contacts always to the default list

This commit is contained in:
Philipp Hörist 2017-01-27 22:24:53 +01:00
parent 5377fc82f7
commit 18e29ebc55
3 changed files with 34 additions and 24 deletions

View file

@ -1752,6 +1752,8 @@ class Connection(CommonConnection, ConnectionHandlers):
return max_order return max_order
def block_contacts(self, contact_list, message): def block_contacts(self, contact_list, message):
if self.privacy_default_list is None:
self.privacy_default_list = 'block'
if not self.privacy_rules_supported: if not self.privacy_rules_supported:
if self.blocking_supported: #XEP-0191 if self.blocking_supported: #XEP-0191
iq = nbxmpp.Iq('set', xmlns='') iq = nbxmpp.Iq('set', xmlns='')
@ -1770,11 +1772,11 @@ class Connection(CommonConnection, ConnectionHandlers):
'value': contact.jid} 'value': contact.jid}
self.blocked_list.append(new_rule) self.blocked_list.append(new_rule)
self.blocked_contacts.append(contact.jid) self.blocked_contacts.append(contact.jid)
self.set_privacy_list('block', self.blocked_list) self.set_privacy_list(self.privacy_default_list, self.blocked_list)
if len(self.blocked_list) == 1: if len(self.blocked_list) == 1:
self.set_active_list('block') self.set_active_list(self.privacy_default_list)
self.set_default_list('block') self.set_default_list(self.privacy_default_list)
self.get_privacy_list('block') self.get_privacy_list(self.privacy_default_list)
def unblock_contacts(self, contact_list): def unblock_contacts(self, contact_list):
if not self.privacy_rules_supported: if not self.privacy_rules_supported:
@ -1796,15 +1798,15 @@ class Connection(CommonConnection, ConnectionHandlers):
if rule['action'] != 'deny' or rule['type'] != 'jid' \ if rule['action'] != 'deny' or rule['type'] != 'jid' \
or rule['value'] not in self.to_unblock: or rule['value'] not in self.to_unblock:
self.new_blocked_list.append(rule) self.new_blocked_list.append(rule)
self.set_privacy_list('block', self.new_blocked_list) self.set_privacy_list(self.privacy_default_list, self.new_blocked_list)
self.get_privacy_list('block') self.get_privacy_list(self.privacy_default_list)
if len(self.new_blocked_list) == 0: if len(self.new_blocked_list) == 0:
self.blocked_list = [] self.blocked_list = []
self.blocked_contacts = [] self.blocked_contacts = []
self.blocked_groups = [] self.blocked_groups = []
self.set_default_list('') self.set_default_list('')
self.set_active_list('') self.set_active_list('')
self.del_privacy_list('block') self.del_privacy_list(self.privacy_default_list)
if not gajim.interface.roster.regroup: if not gajim.interface.roster.regroup:
show = gajim.SHOW_LIST[self.connected] show = gajim.SHOW_LIST[self.connected]
else: # accounts merged else: # accounts merged
@ -1826,11 +1828,11 @@ class Connection(CommonConnection, ConnectionHandlers):
'action': 'deny', 'action': 'deny',
'value': group} 'value': group}
self.blocked_list.append(new_rule) self.blocked_list.append(new_rule)
self.set_privacy_list('block', self.blocked_list) self.set_privacy_list(self.privacy_default_list, self.blocked_list)
if len(self.blocked_list) == 1: if len(self.blocked_list) == 1:
self.set_active_list('block') self.set_active_list(self.privacy_default_list)
self.set_default_list('block') self.set_default_list(self.privacy_default_list)
self.get_privacy_list('block') self.get_privacy_list(self.privacy_default_list)
def unblock_group(self, group, contact_list): def unblock_group(self, group, contact_list):
if not self.privacy_rules_supported: if not self.privacy_rules_supported:
@ -1842,15 +1844,15 @@ class Connection(CommonConnection, ConnectionHandlers):
if rule['action'] != 'deny' or rule['type'] != 'group' or \ if rule['action'] != 'deny' or rule['type'] != 'group' or \
rule['value'] != group: rule['value'] != group:
self.new_blocked_list.append(rule) self.new_blocked_list.append(rule)
self.set_privacy_list('block', self.new_blocked_list) self.set_privacy_list(self.privacy_default_list, self.new_blocked_list)
self.get_privacy_list('block') self.get_privacy_list(self.privacy_default_list)
if len(self.new_blocked_list) == 0: if len(self.new_blocked_list) == 0:
self.blocked_list = [] self.blocked_list = []
self.blocked_contacts = [] self.blocked_contacts = []
self.blocked_groups = [] self.blocked_groups = []
self.set_default_list('') self.set_default_list('')
self.set_active_list('') self.set_active_list('')
self.del_privacy_list('block') self.del_privacy_list(self.privacy_default_list)
if not gajim.interface.roster.regroup: if not gajim.interface.roster.regroup:
show = gajim.SHOW_LIST[self.connected] show = gajim.SHOW_LIST[self.connected]
else: # accounts merged else: # accounts merged
@ -2127,7 +2129,7 @@ class Connection(CommonConnection, ConnectionHandlers):
def _change_from_invisible(self): def _change_from_invisible(self):
if self.privacy_rules_supported: if self.privacy_rules_supported:
if self.blocked_list: if self.blocked_list:
self.activate_privacy_rule('block') self.activate_privacy_rule(self.privacy_default_list)
else: else:
iq = self.build_privacy_rule('visible', 'allow') iq = self.build_privacy_rule('visible', 'allow')
self.connection.send(iq) self.connection.send(iq)
@ -2452,7 +2454,7 @@ class Connection(CommonConnection, ConnectionHandlers):
roster = gajim.interface.roster roster = gajim.interface.roster
if obj.conn.name != self.name: if obj.conn.name != self.name:
return return
if obj.list_name != 'block': if obj.list_name != self.privacy_default_list:
return return
self.blocked_contacts = [] self.blocked_contacts = []
self.blocked_groups = [] self.blocked_groups = []

View file

@ -568,7 +568,11 @@ class ConnectionVcard:
elif self.awaiting_answers[id_][0] == PRIVACY_ARRIVED: elif self.awaiting_answers[id_][0] == PRIVACY_ARRIVED:
del self.awaiting_answers[id_] del self.awaiting_answers[id_]
if iq_obj.getType() != 'error': if iq_obj.getType() != 'error':
self.get_privacy_list('block') for list_ in iq_obj.getQueryPayload():
if list_.getName() == 'default':
self.privacy_default_list = list_.getAttr('name')
self.get_privacy_list(self.privacy_default_list)
break
# Ask metacontacts before roster # Ask metacontacts before roster
self.get_metacontacts() self.get_metacontacts()
else: else:
@ -1443,6 +1447,8 @@ ConnectionHandlersBase, ConnectionJingle, ConnectionIBBytestream):
self.awaiting_xmpp_ping_id = None self.awaiting_xmpp_ping_id = None
self.continue_connect_info = None self.continue_connect_info = None
self.privacy_default_list = None
try: try:
self.sleeper = common.sleepy.Sleepy() self.sleeper = common.sleepy.Sleepy()
HAS_IDLE = True HAS_IDLE = True

View file

@ -2769,6 +2769,7 @@ class GroupchatControl(ChatControlBase):
def on_block(self, widget, nick): def on_block(self, widget, nick):
fjid = self.room_jid + '/' + nick fjid = self.room_jid + '/' + nick
connection = gajim.connections[self.account] connection = gajim.connections[self.account]
default = connection.privacy_default_list
if fjid in connection.blocked_contacts: if fjid in connection.blocked_contacts:
return return
max_order = connection.get_max_blocked_list_order() max_order = connection.get_max_blocked_list_order()
@ -2778,15 +2779,16 @@ class GroupchatControl(ChatControlBase):
connection.blocked_list.append(new_rule) connection.blocked_list.append(new_rule)
connection.blocked_contacts.append(fjid) connection.blocked_contacts.append(fjid)
self.draw_contact(nick) self.draw_contact(nick)
connection.set_privacy_list('block', connection.blocked_list) connection.set_privacy_list(default, connection.blocked_list)
if len(connection.blocked_list) == 1: if len(connection.blocked_list) == 1:
connection.set_active_list('block') connection.set_active_list(default)
connection.set_default_list('block') connection.set_default_list(default)
connection.get_privacy_list('block') connection.get_privacy_list(default)
def on_unblock(self, widget, nick): def on_unblock(self, widget, nick):
fjid = self.room_jid + '/' + nick fjid = self.room_jid + '/' + nick
connection = gajim.connections[self.account] connection = gajim.connections[self.account]
default = connection.privacy_default_list
connection.new_blocked_list = [] connection.new_blocked_list = []
# needed for draw_contact: # needed for draw_contact:
if fjid in connection.blocked_contacts: if fjid in connection.blocked_contacts:
@ -2797,15 +2799,15 @@ class GroupchatControl(ChatControlBase):
or rule['value'] != fjid: or rule['value'] != fjid:
connection.new_blocked_list.append(rule) connection.new_blocked_list.append(rule)
connection.set_privacy_list('block', connection.new_blocked_list) connection.set_privacy_list(default, connection.new_blocked_list)
connection.get_privacy_list('block') connection.get_privacy_list(default)
if len(connection.new_blocked_list) == 0: if len(connection.new_blocked_list) == 0:
connection.blocked_list = [] connection.blocked_list = []
connection.blocked_contacts = [] connection.blocked_contacts = []
connection.blocked_groups = [] connection.blocked_groups = []
connection.set_default_list('') connection.set_default_list('')
connection.set_active_list('') connection.set_active_list('')
connection.del_privacy_list('block') connection.del_privacy_list(default)
if 'privay_list_block' in gajim.interface.instances[self.account]: if 'privay_list_block' in gajim.interface.instances[self.account]:
del gajim.interface.instances[self.account]\ del gajim.interface.instances[self.account]\
['privay_list_block'] ['privay_list_block']