Add blocked contacts always to the default list
This commit is contained in:
parent
5377fc82f7
commit
18e29ebc55
3 changed files with 34 additions and 24 deletions
|
@ -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 = []
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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']
|
||||||
|
|
Loading…
Add table
Reference in a new issue