package de.thedevstack.conversationsplus.services.avatar.listener; import de.thedevstack.android.logcat.Logging; import de.thedevstack.conversationsplus.Config; import de.thedevstack.conversationsplus.entities.Account; import de.thedevstack.conversationsplus.services.avatar.AvatarService; import de.thedevstack.conversationsplus.utils.AvatarUtil; import de.thedevstack.conversationsplus.xml.Element; import de.thedevstack.conversationsplus.xmpp.OnIqPacketReceived; import de.thedevstack.conversationsplus.xmpp.avatar.AvatarPacketParser; import de.thedevstack.conversationsplus.xmpp.pep.Avatar; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; /** */ public class RepublishAvatarAfterMetadataReceived implements OnIqPacketReceived { private boolean errorIsItemNotFound(IqPacket packet) { Element error = packet.findChild("error"); return packet.getType() == IqPacket.TYPE.ERROR && error != null && error.hasChild("item-not-found"); } @Override public void onIqPacketReceived(Account account, IqPacket packet) { if (packet.getType() == IqPacket.TYPE.RESULT || errorIsItemNotFound(packet)) { Avatar serverAvatar = AvatarPacketParser.parseMetadata(packet); if (serverAvatar == null && account.getAvatar() != null) { Avatar avatar = AvatarUtil.getStoredPepAvatar(account.getAvatar()); if (avatar != null) { Logging.d(Config.LOGTAG,account.getJid().toBareJid()+": avatar on server was null. republishing"); AvatarService.getInstance().publishAvatar(avatar, account, null); } else { Logging.e(Config.LOGTAG, account.getJid().toBareJid()+": error rereading avatar"); } } } } }