From 867afe4c5b888ce3f4f9a867906cc8edb86e7aba Mon Sep 17 00:00:00 2001 From: steckbrief Date: Sun, 6 Aug 2017 01:15:13 +0200 Subject: avatar handling refactored --- .../conversationsplus/parser/AbstractParser.java | 8 -------- .../thedevstack/conversationsplus/parser/IqParser.java | 18 +++--------------- .../conversationsplus/parser/MessageParser.java | 12 +++++++----- .../conversationsplus/parser/PresenceParser.java | 18 ++++++++++-------- 4 files changed, 20 insertions(+), 36 deletions(-) (limited to 'src/main/java/de/thedevstack/conversationsplus/parser') diff --git a/src/main/java/de/thedevstack/conversationsplus/parser/AbstractParser.java b/src/main/java/de/thedevstack/conversationsplus/parser/AbstractParser.java index bebe41d0..cb5c9d83 100644 --- a/src/main/java/de/thedevstack/conversationsplus/parser/AbstractParser.java +++ b/src/main/java/de/thedevstack/conversationsplus/parser/AbstractParser.java @@ -85,12 +85,4 @@ public abstract class AbstractParser { } } } - - protected String avatarData(Element items) { - Element item = items.findChild("item"); - if (item == null) { - return null; - } - return item.findChildContent("data", "urn:xmpp:avatar:data"); - } } diff --git a/src/main/java/de/thedevstack/conversationsplus/parser/IqParser.java b/src/main/java/de/thedevstack/conversationsplus/parser/IqParser.java index e13936c5..8af05df5 100644 --- a/src/main/java/de/thedevstack/conversationsplus/parser/IqParser.java +++ b/src/main/java/de/thedevstack/conversationsplus/parser/IqParser.java @@ -27,7 +27,8 @@ import de.thedevstack.conversationsplus.Config; import de.thedevstack.conversationsplus.crypto.axolotl.AxolotlService; import de.thedevstack.conversationsplus.entities.Account; import de.thedevstack.conversationsplus.entities.Contact; -import de.thedevstack.conversationsplus.services.AvatarService; +import de.thedevstack.conversationsplus.services.avatar.AvatarCache; +import de.thedevstack.conversationsplus.services.avatar.AvatarService; import de.thedevstack.conversationsplus.services.XmppConnectionService; import de.thedevstack.conversationsplus.utils.Xmlns; import de.thedevstack.conversationsplus.xml.Element; @@ -71,26 +72,13 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived { contact.parseSubscriptionFromElement(item); } } - AvatarService.getInstance().clear(contact); + AvatarCache.clear(contact); } } mXmppConnectionService.updateConversationUi(); mXmppConnectionService.updateRosterUi(); } - public String avatarData(final IqPacket packet) { - final Element pubsub = packet.findChild("pubsub", - "http://jabber.org/protocol/pubsub"); - if (pubsub == null) { - return null; - } - final Element items = pubsub.findChild("items"); - if (items == null) { - return null; - } - return super.avatarData(items); - } - public Element getItem(final IqPacket packet) { final Element pubsub = packet.findChild("pubsub", "http://jabber.org/protocol/pubsub"); diff --git a/src/main/java/de/thedevstack/conversationsplus/parser/MessageParser.java b/src/main/java/de/thedevstack/conversationsplus/parser/MessageParser.java index 4b6ed240..a8fa0128 100644 --- a/src/main/java/de/thedevstack/conversationsplus/parser/MessageParser.java +++ b/src/main/java/de/thedevstack/conversationsplus/parser/MessageParser.java @@ -5,9 +5,11 @@ import android.util.Pair; import de.thedevstack.conversationsplus.entities.FileParams; import de.thedevstack.conversationsplus.enums.FileStatus; +import de.thedevstack.conversationsplus.services.avatar.AvatarCache; import de.thedevstack.conversationsplus.services.filetransfer.http.download.AutomaticFileDownload; import de.thedevstack.conversationsplus.services.filetransfer.http.download.HttpRetrieveHead; import de.thedevstack.conversationsplus.utils.MessageUtil; +import de.thedevstack.conversationsplus.xmpp.avatar.AvatarPacketParser; import de.thedevstack.conversationsplus.xmpp.httpuploadim.HttpUploadHint; import de.tzur.conversations.Settings; @@ -31,7 +33,7 @@ import de.thedevstack.conversationsplus.entities.Contact; import de.thedevstack.conversationsplus.entities.Conversation; import de.thedevstack.conversationsplus.entities.Message; import de.thedevstack.conversationsplus.entities.MucOptions; -import de.thedevstack.conversationsplus.services.AvatarService; +import de.thedevstack.conversationsplus.services.avatar.AvatarService; import de.thedevstack.conversationsplus.services.MessageArchiveService; import de.thedevstack.conversationsplus.services.XmppConnectionService; import de.thedevstack.conversationsplus.utils.CryptoHelper; @@ -188,7 +190,7 @@ public class MessageParser extends AbstractParser implements Element items = event.findChild("items"); String node = items == null ? null : items.getAttribute("node"); if ("urn:xmpp:avatar:metadata".equals(node)) { - Avatar avatar = Avatar.parseMetadata(items); + Avatar avatar = AvatarPacketParser.parseMetadata(items); if (avatar != null) { avatar.owner = from.toBareJid(); if (AvatarUtil.isAvatarCached(avatar)) { @@ -196,13 +198,13 @@ public class MessageParser extends AbstractParser implements if (account.setAvatar(avatar.getFilename())) { mXmppConnectionService.databaseBackend.updateAccount(account); } - AvatarService.getInstance().clear(account); + AvatarCache.clear(account); mXmppConnectionService.updateConversationUi(); mXmppConnectionService.updateAccountUi(); } else { Contact contact = account.getRoster().getContact(from); contact.setAvatar(avatar); - AvatarService.getInstance().clear(contact); + AvatarCache.clear(contact); mXmppConnectionService.updateConversationUi(); mXmppConnectionService.updateRosterUi(); } @@ -216,7 +218,7 @@ public class MessageParser extends AbstractParser implements if (nick != null && nick.getContent() != null) { Contact contact = account.getRoster().getContact(from); contact.setPresenceName(nick.getContent()); - AvatarService.getInstance().clear(account); + AvatarCache.clear(account); mXmppConnectionService.updateConversationUi(); mXmppConnectionService.updateAccountUi(); } diff --git a/src/main/java/de/thedevstack/conversationsplus/parser/PresenceParser.java b/src/main/java/de/thedevstack/conversationsplus/parser/PresenceParser.java index 52e23bce..74e29393 100644 --- a/src/main/java/de/thedevstack/conversationsplus/parser/PresenceParser.java +++ b/src/main/java/de/thedevstack/conversationsplus/parser/PresenceParser.java @@ -7,6 +7,7 @@ import java.util.List; import de.thedevstack.android.logcat.Logging; import de.thedevstack.conversationsplus.persistance.DatabaseBackend; +import de.thedevstack.conversationsplus.services.avatar.AvatarCache; import de.thedevstack.conversationsplus.utils.AvatarUtil; import de.thedevstack.conversationsplus.utils.UiUpdateHelper; @@ -19,11 +20,12 @@ import de.thedevstack.conversationsplus.entities.Message; import de.thedevstack.conversationsplus.entities.MucOptions; import de.thedevstack.conversationsplus.entities.Presence; import de.thedevstack.conversationsplus.generator.PresenceGenerator; -import de.thedevstack.conversationsplus.services.AvatarService; +import de.thedevstack.conversationsplus.services.avatar.AvatarService; import de.thedevstack.conversationsplus.services.XmppConnectionService; import de.thedevstack.conversationsplus.utils.XmppSendUtil; import de.thedevstack.conversationsplus.xml.Element; import de.thedevstack.conversationsplus.xmpp.OnPresencePacketReceived; +import de.thedevstack.conversationsplus.xmpp.avatar.AvatarVcardParser; import de.thedevstack.conversationsplus.xmpp.jid.Jid; import de.thedevstack.conversationsplus.xmpp.pep.Avatar; import de.thedevstack.conversationsplus.xmpp.stanzas.PresencePacket; @@ -46,7 +48,7 @@ public class PresenceParser extends AbstractParser implements final List tileUserAfter = mucOptions.getUsers(5); if (!tileUserAfter.equals(tileUserBefore)) { Logging.d(Config.LOGTAG, account.getJid().toBareJid() + ": update tiles for " + conversation.getName()); - AvatarService.getInstance().clear(conversation); + AvatarCache.clear(conversation); } if (before != mucOptions.online() || (mucOptions.online() && count != mucOptions.getUserCount())) { UiUpdateHelper.updateConversationUi(); @@ -61,7 +63,7 @@ public class PresenceParser extends AbstractParser implements if (!from.isBareJid()) { final String type = packet.getAttribute("type"); final Element x = packet.findChild("x", "http://jabber.org/protocol/muc#user"); - Avatar avatar = Avatar.parsePresence(packet.findChild("x", "vcard-temp:x:update")); + Avatar avatar = AvatarVcardParser.parseVcardPresenceInformation(packet); final List codes = getStatusCodes(x); if (type == null) { if (x != null) { @@ -103,7 +105,7 @@ public class PresenceParser extends AbstractParser implements avatar.owner = from; if (AvatarUtil.isAvatarCached(avatar)) { if (user.setAvatar(avatar)) { - AvatarService.getInstance().clear(user); + AvatarCache.clear(user); } } else { AvatarService.getInstance().fetchAvatar(mucOptions.getAccount(), avatar); @@ -133,7 +135,7 @@ public class PresenceParser extends AbstractParser implements } else if (!from.isBareJid()){ MucOptions.User user = mucOptions.deleteUser(from.getResourcepart()); if (user != null) { - AvatarService.getInstance().clear(user); + AvatarCache.clear(user); } } } else if (type.equals("error")) { @@ -182,17 +184,17 @@ public class PresenceParser extends AbstractParser implements if (type == null) { 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")); + Avatar avatar = AvatarVcardParser.parseVcardPresenceInformation(packet); if (avatar != null && (!contact.isSelf() || null == account.getAvatar())) { avatar.owner = from.toBareJid(); if (AvatarUtil.isAvatarCached(avatar)) { if (avatar.owner.equals(account.getJid().toBareJid())) { account.setAvatar(avatar.getFilename()); DatabaseBackend.getInstance().updateAccount(account); - AvatarService.getInstance().clear(account); + AvatarCache.clear(account); UiUpdateHelper.updateAccountUi(); } else if (contact.setAvatar(avatar)) { - AvatarService.getInstance().clear(contact); + AvatarCache.clear(contact); UiUpdateHelper.updateRosterUi(); } UiUpdateHelper.updateConversationUi(); -- cgit v1.2.3