diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2015-12-09 10:30:26 +0100 |
---|---|---|
committer | Christian S <christian@pix-art.de> | 2015-12-12 15:50:30 +0100 |
commit | 751f92fa2d7606fbc78085cb5ff7688b71f21d87 (patch) | |
tree | 4a0bd9f3f5db9ccb141921ef956ad30766ac6436 /src/main/java/eu/siacs | |
parent | 911a8ab9e757947560ac4b4b7f1c35d0fda173fa (diff) |
when no avatar found show avatar of contact and not the muc user in conferences
Diffstat (limited to 'src/main/java/eu/siacs')
3 files changed, 13 insertions, 5 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index 853a8408f..014a4c985 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -302,15 +302,15 @@ public class MucOptions { return hasFeature("muc_moderated"); } - public void deleteUser(String name) { + public User deleteUser(String name) { synchronized (this.users) { for (int i = 0; i < users.size(); ++i) { if (users.get(i).getName().equals(name)) { - users.remove(i); - return; + return users.remove(i); } } } + return null; } public void addUser(User user) { diff --git a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java index b8a2a7e96..d9806dfc7 100644 --- a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java +++ b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java @@ -110,7 +110,10 @@ public class PresenceParser extends AbstractParser implements mucOptions.setError(MucOptions.ERROR_UNKNOWN); } } else if (!from.isBareJid()){ - mucOptions.deleteUser(from.getResourcepart()); + MucOptions.User user = mucOptions.deleteUser(from.getResourcepart()); + if (user != null) { + mXmppConnectionService.getAvatarService().clear(user); + } } } else if (type.equals("error")) { Element error = packet.findChild("error"); diff --git a/src/main/java/eu/siacs/conversations/services/AvatarService.java b/src/main/java/eu/siacs/conversations/services/AvatarService.java index 899cbf9ea..bdeab06a8 100644 --- a/src/main/java/eu/siacs/conversations/services/AvatarService.java +++ b/src/main/java/eu/siacs/conversations/services/AvatarService.java @@ -77,7 +77,12 @@ public class AvatarService { avatar = mXmppConnectionService.getFileBackend().getAvatar(user.getAvatar(), size); } if (avatar == null) { - avatar = get(user.getName(), size, cachedOnly); + Contact contact = user.getContact(); + if (contact != null) { + avatar = get(contact, size, cachedOnly); + } else { + avatar = get(user.getName(), size, cachedOnly); + } } this.mXmppConnectionService.getBitmapCache().put(KEY, avatar); return avatar; |