package de.thedevstack.conversationsplus.services.avatar.listener; import de.thedevstack.android.logcat.Logging; import de.thedevstack.conversationsplus.Config; import de.thedevstack.conversationsplus.ConversationsPlusApplication; import de.thedevstack.conversationsplus.entities.Account; import de.thedevstack.conversationsplus.entities.Contact; 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.utils.UiUpdateHelper; import de.thedevstack.conversationsplus.xml.Element; import de.thedevstack.conversationsplus.xmpp.avatar.AvatarPacketParser; import de.thedevstack.conversationsplus.xmpp.pep.Avatar; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; /** * */ public class AvatarPepReceived extends AbstractAvatarIqPacketReceived { public AvatarPepReceived(Avatar avatar, UiCallback uiCallback) { super(avatar, uiCallback); } @Override public void onIqPacketReceived(Account account, IqPacket result) { AvatarService.getInstance().removeFromFetchInProgress(account, avatar); final String ERROR = account.getJid().toBareJid() + ": fetching avatar for " + avatar.owner + " failed "; if (result.getType() == IqPacket.TYPE.RESULT) { avatar.image = AvatarPacketParser.parseAvatarData(result); if (avatar.image != null) { if (AvatarUtil.save(avatar)) { if (account.getJid().toBareJid().equals(avatar.owner)) { if (account.setAvatar(avatar.getFilename())) { DatabaseBackend.getInstance(ConversationsPlusApplication.getAppContext()).updateAccount(account); } AvatarCache.clear(account); UiUpdateHelper.updateConversationUi(); UiUpdateHelper.updateAccountUi(); } else { Contact contact = account.getRoster().getContact(avatar.owner); contact.setAvatar(avatar); AvatarCache.clear(contact); UiUpdateHelper.updateConversationUi(); UiUpdateHelper.updateRosterUi(); } if (callback != null) { callback.success(avatar); } Logging.d(Config.LOGTAG, account.getJid().toBareJid() + ": succesfuly fetched pep avatar for " + avatar.owner); return; } } else { Logging.d(Config.LOGTAG, ERROR + "(parsing error)"); } } else { Element error = result.findChild("error"); if (error == null) { Logging.d(Config.LOGTAG, ERROR + "(server error)"); } else { Logging.d(Config.LOGTAG, ERROR + error.toString()); } } if (callback != null) { callback.error(0, null); } } }