offer offline members to be invited again

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/MucOptions.java | 18 ++++
src/main/java/eu/siacs/conversations/ui/XmppActivity.java     |  2 
2 files changed, 17 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/MucOptions.java 🔗

@@ -349,7 +349,7 @@ public class MucOptions {
 		User user = findUserByFullJid(jid);
 		if (user != null) {
 			users.remove(user);
-			if (user.affiliation.ranks(Affiliation.MEMBER)) {
+			if (user.affiliation.ranks(Affiliation.MEMBER) && user.realJid != null) {
 				user.role = Role.NONE;
 				user.avatar = null;
 				user.fullJid = null;
@@ -417,7 +417,21 @@ public class MucOptions {
 	}
 
 	public ArrayList<User> getUsers() {
-		return new ArrayList<>(users);
+		return getUsers(true);
+	}
+
+	public ArrayList<User> getUsers(boolean includeOffline) {
+		if (includeOffline) {
+			return new ArrayList<>(users);
+		} else {
+			ArrayList<User> onlineUsers = new ArrayList<>();
+			for(User user : users) {
+				if(user.getRole().ranks(Role.PARTICIPANT)) {
+					onlineUsers.add(user);
+				}
+			}
+			return onlineUsers;
+		}
 	}
 
 	public List<User> getUsers(int max) {

src/main/java/eu/siacs/conversations/ui/XmppActivity.java 🔗

@@ -478,7 +478,7 @@ public abstract class XmppActivity extends Activity {
 				ChooseContactActivity.class);
 		List<String> contacts = new ArrayList<>();
 		if (conversation.getMode() == Conversation.MODE_MULTI) {
-			for (MucOptions.User user : conversation.getMucOptions().getUsers()) {
+			for (MucOptions.User user : conversation.getMucOptions().getUsers(false)) {
 				Jid jid = user.getRealJid();
 				if (jid != null) {
 					contacts.add(jid.toBareJid().toString());