aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/parser/PresenceParser.java
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2016-09-09 11:04:05 +0200
committerChristian Schneppe <christian@pix-art.de>2016-09-09 22:30:45 +0200
commit49f53c12c2b57d4f7cc765fd552a887668713a97 (patch)
treecc4e8ea0535d736fd5cd6b86ecc2278daac9f3b9 /src/main/java/de/pixart/messenger/parser/PresenceParser.java
parent95d6e3f1dce82ce1bb17f58755cfdc62d6238835 (diff)
download own vcard avatar if none is set. fixes #2008
Diffstat (limited to 'src/main/java/de/pixart/messenger/parser/PresenceParser.java')
-rw-r--r--src/main/java/de/pixart/messenger/parser/PresenceParser.java16
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()){