Fixes FS#29: Own Avatar not loaded

This commit is contained in:
steckbrief 2016-09-29 11:58:17 +02:00
parent 34fcdda53f
commit 9ec29bb1dc

View file

@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.List;
import de.thedevstack.android.logcat.Logging;
import de.thedevstack.conversationsplus.persistance.DatabaseBackend;
import de.thedevstack.conversationsplus.utils.AvatarUtil;
import de.thedevstack.conversationsplus.utils.UiUpdateHelper;
@ -182,14 +183,19 @@ 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()) {
if (avatar != null && (!contact.isSelf() || null == account.getAvatar())) {
avatar.owner = from.toBareJid();
if (AvatarUtil.isAvatarCached(avatar)) {
if (contact.setAvatar(avatar)) {
if (avatar.owner.equals(account.getJid().toBareJid())) {
account.setAvatar(avatar.getFilename());
DatabaseBackend.getInstance().updateAccount(account);
AvatarService.getInstance().clear(account);
UiUpdateHelper.updateAccountUi();
} else if (contact.setAvatar(avatar)) {
AvatarService.getInstance().clear(contact);
UiUpdateHelper.updateConversationUi();
UiUpdateHelper.updateRosterUi();
}
UiUpdateHelper.updateConversationUi();
} else {
AvatarService.getInstance().fetchAvatar(account, avatar);
}