From 494fb2d3275fe990450c6c1de9a8435dcb317c2f Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Mon, 4 Sep 2017 20:59:35 +0200 Subject: made avatar cache cleaning more efficent after name changes --- src/main/java/de/pixart/messenger/entities/Contact.java | 8 +++++--- .../java/de/pixart/messenger/parser/MessageParser.java | 17 ++++++++++------- .../java/de/pixart/messenger/parser/PresenceParser.java | 4 +++- src/main/java/de/pixart/messenger/utils/Namespace.java | 1 + 4 files changed, 19 insertions(+), 11 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/de/pixart/messenger/entities/Contact.java b/src/main/java/de/pixart/messenger/entities/Contact.java index 9681e69bc..7eb1394ce 100644 --- a/src/main/java/de/pixart/messenger/entities/Contact.java +++ b/src/main/java/de/pixart/messenger/entities/Contact.java @@ -263,13 +263,15 @@ public class Contact implements ListItem, Blockable { } public boolean setSystemName(String systemName) { - String old = this.systemName; + final String old = getDisplayName(); this.systemName = systemName; - return (old == null && systemName != null) || (old != null && !old.equals(systemName)); + return !old.equals(getDisplayName()); } - public void setPresenceName(String presenceName) { + public boolean setPresenceName(String presenceName) { + final String old = getDisplayName(); this.presenceName = presenceName; + return !old.equals(getDisplayName()); } public Uri getSystemAccount() { diff --git a/src/main/java/de/pixart/messenger/parser/MessageParser.java b/src/main/java/de/pixart/messenger/parser/MessageParser.java index 25190b32d..54a4571cc 100644 --- a/src/main/java/de/pixart/messenger/parser/MessageParser.java +++ b/src/main/java/de/pixart/messenger/parser/MessageParser.java @@ -280,12 +280,13 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece } } } else if ("http://jabber.org/protocol/nick".equals(node)) { - Element i = items.findChild("item"); - Element nick = i == null ? null : i.findChild("nick", "http://jabber.org/protocol/nick"); - if (nick != null && nick.getContent() != null) { + final Element i = items.findChild("item"); + final String nick = i == null ? null : i.findChildContent("nick", Namespace.NICK); + if (nick != null) { Contact contact = account.getRoster().getContact(from); - contact.setPresenceName(nick.getContent()); - mXmppConnectionService.getAvatarService().clear(account); + if (contact.setPresenceName(nick)) { + mXmppConnectionService.getAvatarService().clear(contact); + } mXmppConnectionService.updateConversationUi(); mXmppConnectionService.updateAccountUi(); } @@ -707,10 +708,12 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece parseEvent(event, original.getFrom(), account); } - String nick = packet.findChildContent("nick", "http://jabber.org/protocol/nick"); + final String nick = packet.findChildContent("nick", Namespace.NICK); if (nick != null) { Contact contact = account.getRoster().getContact(from); - contact.setPresenceName(nick); + if (contact.setPresenceName(nick)) { + mXmppConnectionService.getAvatarService().clear(contact); + } } } diff --git a/src/main/java/de/pixart/messenger/parser/PresenceParser.java b/src/main/java/de/pixart/messenger/parser/PresenceParser.java index 37efcdc8b..0ade1abc3 100644 --- a/src/main/java/de/pixart/messenger/parser/PresenceParser.java +++ b/src/main/java/de/pixart/messenger/parser/PresenceParser.java @@ -185,7 +185,9 @@ public class PresenceParser extends AbstractParser implements final Contact contact = account.getRoster().getContact(from); if (type == null) { final String resource = from.isBareJid() ? "" : from.getResourcepart(); - contact.setPresenceName(packet.findChildContent("nick", "http://jabber.org/protocol/nick")); + if (contact.setPresenceName(packet.findChildContent("nick", Namespace.NICK))) { + mXmppConnectionService.getAvatarService().clear(contact); + } Avatar avatar = Avatar.parsePresence(packet.findChild("x", "vcard-temp:x:update")); if (avatar != null && (!contact.isSelf() || account.getAvatar() == null)) { avatar.owner = from.toBareJid(); diff --git a/src/main/java/de/pixart/messenger/utils/Namespace.java b/src/main/java/de/pixart/messenger/utils/Namespace.java index 1cf4d5c74..d80b31d33 100644 --- a/src/main/java/de/pixart/messenger/utils/Namespace.java +++ b/src/main/java/de/pixart/messenger/utils/Namespace.java @@ -15,4 +15,5 @@ public final class Namespace { public static final String TLS = "urn:ietf:params:xml:ns:xmpp-tls"; public static final String PUBSUB_PUBLISH_OPTIONS = "http://jabber.org/protocol/pubsub#publish-options"; public static final String PUBSUB_ERROR = "http://jabber.org/protocol/pubsub#errors"; + public static final String NICK = "http://jabber.org/protocol/nick"; } -- cgit v1.2.3