package de.thedevstack.conversationsplus.services.avatar.listener; import de.thedevstack.conversationsplus.ConversationsPlusApplication; import de.thedevstack.conversationsplus.entities.Account; import de.thedevstack.conversationsplus.persistance.DatabaseBackend; import de.thedevstack.conversationsplus.services.avatar.AvatarCache; import de.thedevstack.conversationsplus.services.avatar.AvatarService; import de.thedevstack.conversationsplus.ui.UiCallback; import de.thedevstack.conversationsplus.utils.AvatarUtil; import de.thedevstack.conversationsplus.xmpp.avatar.AvatarPacketParser; import de.thedevstack.conversationsplus.xmpp.pep.Avatar; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; /** * */ public class AvatarMetadataReceived extends AbstractAvatarIqPacketReceived { public AvatarMetadataReceived(UiCallback uiCallback) { super(null, uiCallback); } @Override public void onIqPacketReceived(Account account, IqPacket packet) { if (packet.getType() == IqPacket.TYPE.RESULT) { Avatar avatar = AvatarPacketParser.parseMetadata(packet); if (avatar != null) { avatar.owner = account.getJid().toBareJid(); if (AvatarUtil.isAvatarCached(avatar)) { if (account.setAvatar(avatar.getFilename())) { DatabaseBackend.getInstance(ConversationsPlusApplication.getAppContext()).updateAccount(account); } AvatarCache.clear(account); if (null != callback) { callback.success(avatar); } } else { AvatarService.getInstance().fetchAvatarPep(account, avatar, callback); } return; } } if (null != callback) { callback.error(0, null); } } }