do not include white listed domains in room list. fixes #3082
This commit is contained in:
		
							parent
							
								
									1fc432af53
								
							
						
					
					
						commit
						e6532e739a
					
				| @ -868,7 +868,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { | |||||||
| 			jids = new ArrayList<>(); | 			jids = new ArrayList<>(); | ||||||
| 			jids.add(conversation.getJid().asBareJid()); | 			jids.add(conversation.getJid().asBareJid()); | ||||||
| 		} else { | 		} else { | ||||||
| 			jids = conversation.getMucOptions().getMembers(); | 			jids = conversation.getMucOptions().getMembers(false); | ||||||
| 		} | 		} | ||||||
| 		return jids; | 		return jids; | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -306,6 +306,10 @@ public class MucOptions { | |||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		public boolean isDomain() { | ||||||
|  | 			return realJid != null && realJid.getLocal() == null && role == Role.NONE; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		@Override | 		@Override | ||||||
| 		public int hashCode() { | 		public int hashCode() { | ||||||
| 			int result = role != null ? role.hashCode() : 0; | 			int result = role != null ? role.hashCode() : 0; | ||||||
| @ -610,17 +614,13 @@ public class MucOptions { | |||||||
| 
 | 
 | ||||||
| 	public ArrayList<User> getUsers(boolean includeOffline) { | 	public ArrayList<User> getUsers(boolean includeOffline) { | ||||||
| 		synchronized (users) { | 		synchronized (users) { | ||||||
| 			if (includeOffline) { | 				ArrayList<User> users = new ArrayList<>(); | ||||||
| 				return new ArrayList<>(users); | 				for (User user : this.users) { | ||||||
| 			} else { | 					if (!user.isDomain() && (includeOffline || user.getRole().ranks(Role.PARTICIPANT))) { | ||||||
| 				ArrayList<User> onlineUsers = new ArrayList<>(); | 						users.add(user); | ||||||
| 				for (User user : users) { |  | ||||||
| 					if (user.getRole().ranks(Role.PARTICIPANT)) { |  | ||||||
| 						onlineUsers.add(user); |  | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				return onlineUsers; | 				return users; | ||||||
| 			} |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -645,7 +645,7 @@ public class MucOptions { | |||||||
| 		jids.add(account.getJid().asBareJid()); | 		jids.add(account.getJid().asBareJid()); | ||||||
| 		synchronized (users) { | 		synchronized (users) { | ||||||
| 			for (User user : users) { | 			for (User user : users) { | ||||||
| 				if (user.getRealJid() == null || jids.add(user.getRealJid())) { | 				if (user.getRealJid() == null || (user.getRealJid().getLocal() != null && jids.add(user.getRealJid()))) { | ||||||
| 					subset.add(user); | 					subset.add(user); | ||||||
| 				} | 				} | ||||||
| 				if (subset.size() >= max) { | 				if (subset.size() >= max) { | ||||||
| @ -834,11 +834,11 @@ public class MucOptions { | |||||||
| 		return this.conversation; | 		return this.conversation; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public List<Jid> getMembers() { | 	public List<Jid> getMembers(final boolean includeDomains) { | ||||||
| 		ArrayList<Jid> members = new ArrayList<>(); | 		ArrayList<Jid> members = new ArrayList<>(); | ||||||
| 		synchronized (users) { | 		synchronized (users) { | ||||||
| 			for (User user : users) { | 			for (User user : users) { | ||||||
| 				if (user.affiliation.ranks(Affiliation.MEMBER) && user.realJid != null) { | 				if (user.affiliation.ranks(Affiliation.MEMBER) && user.realJid != null && (!user.isDomain() || includeDomains)) { | ||||||
| 					members.add(user.realJid); | 					members.add(user.realJid); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  | |||||||
| @ -2220,13 +2220,13 @@ public class XmppConnectionService extends Service { | |||||||
| 				} | 				} | ||||||
| 				++i; | 				++i; | ||||||
| 				if (i >= affiliations.length) { | 				if (i >= affiliations.length) { | ||||||
| 					List<Jid> members = conversation.getMucOptions().getMembers(); | 					List<Jid> members = conversation.getMucOptions().getMembers(true); | ||||||
| 					if (success) { | 					if (success) { | ||||||
| 						List<Jid> cryptoTargets = conversation.getAcceptedCryptoTargets(); | 						List<Jid> cryptoTargets = conversation.getAcceptedCryptoTargets(); | ||||||
| 						boolean changed = false; | 						boolean changed = false; | ||||||
| 						for (ListIterator<Jid> iterator = cryptoTargets.listIterator(); iterator.hasNext(); ) { | 						for (ListIterator<Jid> iterator = cryptoTargets.listIterator(); iterator.hasNext(); ) { | ||||||
| 							Jid jid = iterator.next(); | 							Jid jid = iterator.next(); | ||||||
| 							if (!members.contains(jid)) { | 							if (!members.contains(jid) && !members.contains(Jid.ofDomain(jid.getDomain()))) { | ||||||
| 								iterator.remove(); | 								iterator.remove(); | ||||||
| 								Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": removed " + jid + " from crypto targets of " + conversation.getName()); | 								Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": removed " + jid + " from crypto targets of " + conversation.getName()); | ||||||
| 								changed = true; | 								changed = true; | ||||||
| @ -2237,7 +2237,6 @@ public class XmppConnectionService extends Service { | |||||||
| 							updateConversation(conversation); | 							updateConversation(conversation); | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 					Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": retrieved members for " + conversation.getJid().asBareJid() + ": " + conversation.getMucOptions().getMembers()); |  | ||||||
| 					getAvatarService().clear(conversation); | 					getAvatarService().clear(conversation); | ||||||
| 					updateMucRosterUi(); | 					updateMucRosterUi(); | ||||||
| 					updateConversationUi(); | 					updateConversationUi(); | ||||||
|  | |||||||
| @ -244,7 +244,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers | |||||||
| 		setSupportActionBar((Toolbar) binding.toolbar); | 		setSupportActionBar((Toolbar) binding.toolbar); | ||||||
| 		configureActionBar(getSupportActionBar()); | 		configureActionBar(getSupportActionBar()); | ||||||
| 		this.binding.editNickButton.setOnClickListener(v -> quickEdit(mConversation.getMucOptions().getActualNick(), | 		this.binding.editNickButton.setOnClickListener(v -> quickEdit(mConversation.getMucOptions().getActualNick(), | ||||||
| 				R.string.nickname_for_this_group_chat, | 				R.string.nickname, | ||||||
| 				value -> { | 				value -> { | ||||||
| 					if (xmppConnectionService.renameInMuc(mConversation, value, renameCallback)) { | 					if (xmppConnectionService.renameInMuc(mConversation, value, renameCallback)) { | ||||||
| 						return null; | 						return null; | ||||||
|  | |||||||
| @ -720,5 +720,5 @@ | |||||||
|     <string name="host_does_not_support_group_chat_avatars">Host does not support group chat avatars</string> |     <string name="host_does_not_support_group_chat_avatars">Host does not support group chat avatars</string> | ||||||
|     <string name="only_the_owner_can_change_group_chat_avatar">Only the owner can change group chat avatar</string> |     <string name="only_the_owner_can_change_group_chat_avatar">Only the owner can change group chat avatar</string> | ||||||
|     <string name="contact_name">Contact name</string> |     <string name="contact_name">Contact name</string> | ||||||
|     <string name="nickname_for_this_group_chat">Nickname for this group chat</string> |     <string name="nickname">Nickname</string> | ||||||
| </resources> | </resources> | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch