aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities')
-rw-r--r--src/main/java/de/pixart/messenger/entities/MucOptions.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/MucOptions.java b/src/main/java/de/pixart/messenger/entities/MucOptions.java
index ef2f4bee4..3e2349c9c 100644
--- a/src/main/java/de/pixart/messenger/entities/MucOptions.java
+++ b/src/main/java/de/pixart/messenger/entities/MucOptions.java
@@ -448,13 +448,16 @@ public class MucOptions {
return user;
}
- public void updateUser(User user) {
+ //returns true if real jid was new;
+ public boolean updateUser(User user) {
User old;
+ boolean realJidFound = false;
if (user.fullJid == null && user.realJid != null) {
old = findUserByRealJid(user.realJid);
+ realJidFound = old != null;
if (old != null) {
if (old.fullJid != null) {
- return; //don't add. user already exists
+ return false; //don't add. user already exists
} else {
synchronized (users) {
users.remove(old);
@@ -463,6 +466,7 @@ public class MucOptions {
}
} else if (user.realJid != null) {
old = findUserByRealJid(user.realJid);
+ realJidFound = old != null;
synchronized (users) {
if (old != null && old.fullJid == null) {
users.remove(old);
@@ -479,8 +483,10 @@ public class MucOptions {
&& user.getAffiliation().outranks(Affiliation.OUTCAST)
&& !fullJidIsSelf) {
this.users.add(user);
+ return !realJidFound && user.realJid != null;
}
}
+ return false;
}
public User findUserByFullJid(Jid jid) {