This commit is contained in:
		
							parent
							
								
									b09b8136d2
								
							
						
					
					
						commit
						39bb8ad05f
					
				| @ -167,11 +167,13 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece | ||||
| 	} | ||||
| 
 | ||||
| 	private class Invite { | ||||
| 		Jid jid; | ||||
| 		String password; | ||||
| 		Invite(Jid jid, String password) { | ||||
| 		final Jid jid; | ||||
| 		final String password; | ||||
| 		final Contact inviter; | ||||
| 		Invite(Jid jid, String password, Contact inviter) { | ||||
| 			this.jid = jid; | ||||
| 			this.password = password; | ||||
| 			this.inviter = inviter; | ||||
| 		} | ||||
| 
 | ||||
| 		public boolean execute(Account account) { | ||||
| @ -180,7 +182,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece | ||||
| 				if (!conversation.getMucOptions().online()) { | ||||
| 					conversation.getMucOptions().setPassword(password); | ||||
| 					mXmppConnectionService.databaseBackend.updateConversation(conversation); | ||||
| 					mXmppConnectionService.joinMuc(conversation); | ||||
| 					mXmppConnectionService.joinMuc(conversation, inviter != null && inviter.mutualPresenceSubscription()); | ||||
| 					mXmppConnectionService.updateConversationUi(); | ||||
| 				} | ||||
| 				return true; | ||||
| @ -189,18 +191,22 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	private Invite extractInvite(Element message) { | ||||
| 	private Invite extractInvite(Account account, Element message) { | ||||
| 		Element x = message.findChild("x", "http://jabber.org/protocol/muc#user"); | ||||
| 		if (x != null) { | ||||
| 			Element invite = x.findChild("invite"); | ||||
| 			if (invite != null) { | ||||
| 				Element pw = x.findChild("password"); | ||||
| 				return new Invite(message.getAttributeAsJid("from"), pw != null ? pw.getContent(): null); | ||||
| 				Jid from = invite.getAttributeAsJid("from"); | ||||
| 				Contact contact = from == null ? null : account.getRoster().getContact(from); | ||||
| 				return new Invite(message.getAttributeAsJid("from"), pw != null ? pw.getContent(): null, contact); | ||||
| 			} | ||||
| 		} else { | ||||
| 			x = message.findChild("x","jabber:x:conference"); | ||||
| 			if (x != null) { | ||||
| 				return new Invite(x.getAttributeAsJid("jid"),x.getAttribute("password")); | ||||
| 				Jid from = message.getAttributeAsJid("from"); | ||||
| 				Contact contact = from == null ? null : account.getRoster().getContact(from); | ||||
| 				return new Invite(x.getAttributeAsJid("jid"),x.getAttribute("password"),contact); | ||||
| 			} | ||||
| 		} | ||||
| 		return null; | ||||
| @ -364,7 +370,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece | ||||
| 			counterpart = from; | ||||
| 		} | ||||
| 
 | ||||
| 		Invite invite = extractInvite(packet); | ||||
| 		Invite invite = extractInvite(account, packet); | ||||
| 		if (invite != null && invite.execute(account)) { | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| @ -2047,10 +2047,18 @@ public class XmppConnectionService extends Service { | ||||
| 	} | ||||
| 
 | ||||
| 	public void joinMuc(Conversation conversation) { | ||||
| 		joinMuc(conversation, null); | ||||
| 		joinMuc(conversation,null, false); | ||||
| 	} | ||||
| 
 | ||||
| 	public void joinMuc(Conversation conversation, boolean followedInvite) { | ||||
| 		joinMuc(conversation, null, followedInvite); | ||||
| 	} | ||||
| 
 | ||||
| 	private void joinMuc(Conversation conversation, final OnConferenceJoined onConferenceJoined) { | ||||
| 		joinMuc(conversation,onConferenceJoined,false); | ||||
| 	} | ||||
| 
 | ||||
| 	private void joinMuc(Conversation conversation, final OnConferenceJoined onConferenceJoined, final boolean followedInvite) { | ||||
| 		Account account = conversation.getAccount(); | ||||
| 		account.pendingConferenceJoins.remove(conversation); | ||||
| 		account.pendingConferenceLeaves.remove(conversation); | ||||
| @ -2095,6 +2103,9 @@ public class XmppConnectionService extends Service { | ||||
| 					} | ||||
| 					if (mucOptions.membersOnly() && mucOptions.nonanonymous()) { | ||||
| 						fetchConferenceMembers(conversation); | ||||
| 						if (followedInvite && conversation.getBookmark() == null) { | ||||
| 							saveConversationAsBookmark(conversation,null); | ||||
| 						} | ||||
| 					} | ||||
| 					sendUnsentMessages(conversation); | ||||
| 				} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user