aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2015-12-09 10:30:26 +0100
committerChristian S <christian@pix-art.de>2015-12-12 15:50:30 +0100
commit751f92fa2d7606fbc78085cb5ff7688b71f21d87 (patch)
tree4a0bd9f3f5db9ccb141921ef956ad30766ac6436 /src/main/java
parent911a8ab9e757947560ac4b4b7f1c35d0fda173fa (diff)
when no avatar found show avatar of contact and not the muc user in conferences
Diffstat (limited to '')
-rw-r--r--src/main/java/eu/siacs/conversations/entities/MucOptions.java6
-rw-r--r--src/main/java/eu/siacs/conversations/parser/PresenceParser.java5
-rw-r--r--src/main/java/eu/siacs/conversations/services/AvatarService.java7
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;