ask transport contact avatars only when transport is connected. fixes #2832
This commit is contained in:
parent
cafef3c1c5
commit
483481c586
|
@ -120,6 +120,10 @@ sleeper_state = {} # whether we pass auto away / xa or not
|
|||
#'autoxa': autoxa and use sleeper
|
||||
status_before_autoaway = {}
|
||||
|
||||
# jid of transport contacts for which we need to ask avatar when transport will
|
||||
# be online
|
||||
transport_avatar = {} # {transport_jid: [jid_list]}
|
||||
|
||||
SHOW_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd',
|
||||
'invisible', 'error']
|
||||
|
||||
|
|
|
@ -1467,6 +1467,7 @@ class AccountModificationWindow:
|
|||
gajim.last_message_time[self.account]
|
||||
gajim.status_before_autoaway[name] = \
|
||||
gajim.status_before_autoaway[self.account]
|
||||
gajim.transport_avatar[name] = gajim.transport_avatar[self.account]
|
||||
|
||||
gajim.contacts.change_account_name(self.account, name)
|
||||
gajim.events.change_account_name(self.account, name)
|
||||
|
@ -1493,6 +1494,7 @@ class AccountModificationWindow:
|
|||
del gajim.encrypted_chats[self.account]
|
||||
del gajim.last_message_time[self.account]
|
||||
del gajim.status_before_autoaway[self.account]
|
||||
del gajim.transport_avatar[self.account]
|
||||
gajim.connections[self.account].name = name
|
||||
gajim.connections[name] = gajim.connections[self.account]
|
||||
del gajim.connections[self.account]
|
||||
|
@ -2054,6 +2056,7 @@ class AccountsWindow:
|
|||
del gajim.encrypted_chats[gajim.ZEROCONF_ACC_NAME]
|
||||
del gajim.last_message_time[gajim.ZEROCONF_ACC_NAME]
|
||||
del gajim.status_before_autoaway[gajim.ZEROCONF_ACC_NAME]
|
||||
del gajim.transport_avatar[gajim.ZEROCONF_ACC_NAME]
|
||||
if len(gajim.connections) >= 2:
|
||||
# Do not merge accounts if only one exists
|
||||
gajim.interface.roster.regroup = gajim.config.get('mergeaccounts')
|
||||
|
@ -2084,6 +2087,7 @@ class AccountsWindow:
|
|||
gajim.encrypted_chats[gajim.ZEROCONF_ACC_NAME] = []
|
||||
gajim.last_message_time[gajim.ZEROCONF_ACC_NAME] = {}
|
||||
gajim.status_before_autoaway[gajim.ZEROCONF_ACC_NAME] = ''
|
||||
gajim.transport_avatar[gajim.ZEROCONF_ACC_NAME] = {}
|
||||
# refresh accounts window
|
||||
if gajim.interface.instances.has_key('accounts'):
|
||||
gajim.interface.instances['accounts'].init_accounts()
|
||||
|
@ -2587,6 +2591,7 @@ class RemoveAccountWindow:
|
|||
del gajim.encrypted_chats[self.account]
|
||||
del gajim.last_message_time[self.account]
|
||||
del gajim.status_before_autoaway[self.account]
|
||||
del gajim.transport_avatar[self.account]
|
||||
if len(gajim.connections) >= 2: # Do not merge accounts if only one exists
|
||||
gajim.interface.roster.regroup = gajim.config.get('mergeaccounts')
|
||||
else:
|
||||
|
@ -3231,6 +3236,7 @@ class AccountCreationWizardWindow:
|
|||
gajim.encrypted_chats[self.account] = []
|
||||
gajim.last_message_time[self.account] = {}
|
||||
gajim.status_before_autoaway[self.account] = ''
|
||||
gajim.transport_avatar[self.account] = {}
|
||||
# refresh accounts window
|
||||
if gajim.interface.instances.has_key('accounts'):
|
||||
gajim.interface.instances['accounts'].init_accounts()
|
||||
|
|
|
@ -595,6 +595,10 @@ class Interface:
|
|||
# Update existing iter
|
||||
self.roster.draw_contact(ji, account)
|
||||
self.roster.draw_group(_('Transports'), account)
|
||||
if new_show > 1 and ji in gajim.transport_avatar[account]:
|
||||
# transport just signed in. request avatars
|
||||
for jid_ in gajim.transport_avatar[account][ji]:
|
||||
gajim.connections[account].request_vcard(jid_)
|
||||
# transport just signed in/out, don't show popup notifications
|
||||
# for 30s
|
||||
account_ji = account + '/' + ji
|
||||
|
@ -2134,6 +2138,7 @@ class Interface:
|
|||
gajim.encrypted_chats[a] = []
|
||||
gajim.last_message_time[a] = {}
|
||||
gajim.status_before_autoaway[a] = ''
|
||||
gajim.transport_avatar[a] = {}
|
||||
|
||||
self.roster = roster_window.RosterWindow()
|
||||
|
||||
|
|
|
@ -1157,10 +1157,18 @@ class RosterWindow:
|
|||
if gajim.config.get('ask_avatars_on_startup'):
|
||||
pixbuf = gtkgui_helpers.get_avatar_pixbuf_from_cache(ji)
|
||||
if pixbuf == 'ask':
|
||||
jid_with_resource = contact1.jid
|
||||
if contact1.resource:
|
||||
jid_with_resource += '/' + contact1.resource
|
||||
gajim.connections[account].request_vcard(jid_with_resource)
|
||||
transport = gajim.get_transport_name_from_jid(contact1.jid)
|
||||
if not transport or gajim.jid_is_transport(contact1.jid):
|
||||
jid_with_resource = contact1.jid
|
||||
if contact1.resource:
|
||||
jid_with_resource += '/' + contact1.resource
|
||||
gajim.connections[account].request_vcard(jid_with_resource)
|
||||
else:
|
||||
host = gajim.get_server_from_jid(contact1.jid)
|
||||
if not gajim.transport_avatar[account].has_key(host):
|
||||
gajim.transport_avatar[account][host] = [contact1.jid]
|
||||
else:
|
||||
gajim.transport_avatar[account][host].append(contact1.jid)
|
||||
# If we already have a chat window opened, update it with new contact
|
||||
# instance
|
||||
chat_control = gajim.interface.msg_win_mgr.get_control(ji, account)
|
||||
|
|
Loading…
Reference in New Issue