blob: 16f4bf81d50db7e6b4ab6fff7a3ecf71cebf6198 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
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");
}
}
}
}
}
|