diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2016-09-09 11:04:05 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2016-09-09 22:30:45 +0200 |
commit | 49f53c12c2b57d4f7cc765fd552a887668713a97 (patch) | |
tree | cc4e8ea0535d736fd5cd6b86ecc2278daac9f3b9 /src/main/java/de/pixart/messenger/parser | |
parent | 95d6e3f1dce82ce1bb17f58755cfdc62d6238835 (diff) |
download own vcard avatar if none is set. fixes #2008
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/pixart/messenger/parser/PresenceParser.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/main/java/de/pixart/messenger/parser/PresenceParser.java b/src/main/java/de/pixart/messenger/parser/PresenceParser.java index 31f2fdcae..477aff0ba 100644 --- a/src/main/java/de/pixart/messenger/parser/PresenceParser.java +++ b/src/main/java/de/pixart/messenger/parser/PresenceParser.java @@ -183,12 +183,18 @@ public class PresenceParser extends AbstractParser implements final String resource = from.isBareJid() ? "" : from.getResourcepart(); contact.setPresenceName(packet.findChildContent("nick", "http://jabber.org/protocol/nick")); Avatar avatar = Avatar.parsePresence(packet.findChild("x", "vcard-temp:x:update")); - if (avatar != null && !contact.isSelf()) { - avatar.owner = from.toBareJid(); + if (avatar != null && (!contact.isSelf() || account.getAvatar() == null)) { + avatar.owner = from.toBareJid(); if (mXmppConnectionService.getFileBackend().isAvatarCached(avatar)) { - if (contact.setAvatar(avatar)) { - mXmppConnectionService.getAvatarService().clear(contact); - mXmppConnectionService.updateConversationUi(); + if (avatar.owner.equals(account.getJid().toBareJid())) { + account.setAvatar(avatar.getFilename()); + mXmppConnectionService.databaseBackend.updateAccount(account); + mXmppConnectionService.getAvatarService().clear(account); + mXmppConnectionService.updateConversationUi(); + mXmppConnectionService.updateAccountUi(); + } else if (contact.setAvatar(avatar)) { + mXmppConnectionService.getAvatarService().clear(contact); + mXmppConnectionService.updateConversationUi(); mXmppConnectionService.updateRosterUi(); } } else if (mXmppConnectionService.isDataSaverDisabled()){ |