handle app links for conferences
This commit is contained in:
		
							parent
							
								
									8eb1640a26
								
							
						
					
					
						commit
						9321ccc775
					
				| @ -82,7 +82,8 @@ | ||||
|                 <category android:name="android.intent.category.BROWSABLE" /> | ||||
|                 <data android:scheme="https" /> | ||||
|                 <data android:host="conversations.im" /> | ||||
|                 <data android:pathPrefix="/i/"/> | ||||
|                 <data android:pathPrefix="/i/" /> | ||||
|                 <data android:pathPrefix="/j/" /> | ||||
|             </intent-filter> | ||||
| 
 | ||||
|         </activity> | ||||
|  | ||||
| @ -3124,6 +3124,16 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa | ||||
| 		return contacts; | ||||
| 	} | ||||
| 
 | ||||
| 	public Conversation findFirstMuc(Jid jid) { | ||||
| 		for(Conversation conversation : getConversations()) { | ||||
| 			if (conversation.getJid().toBareJid().equals(jid.toBareJid()) | ||||
| 					&& conversation.getMode() == Conversation.MODE_MULTI) { | ||||
| 				return conversation; | ||||
| 			} | ||||
| 		} | ||||
| 		return null; | ||||
| 	} | ||||
| 
 | ||||
| 	public NotificationService getNotificationService() { | ||||
| 		return this.mNotificationService; | ||||
| 	} | ||||
|  | ||||
| @ -846,7 +846,16 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU | ||||
| 
 | ||||
| 	private boolean handleJid(Invite invite) { | ||||
| 		List<Contact> contacts = xmppConnectionService.findContacts(invite.getJid()); | ||||
| 		if (contacts.size() == 0) { | ||||
| 		if (invite.isMuc()) { | ||||
| 			Conversation muc = xmppConnectionService.findFirstMuc(invite.getJid()); | ||||
| 			if (muc != null) { | ||||
| 				switchToConversation(muc); | ||||
| 				return true; | ||||
| 			} else { | ||||
| 				showJoinConferenceDialog(invite.getJid().toBareJid().toString()); | ||||
| 				return false; | ||||
| 			} | ||||
| 		} else if (contacts.size() == 0) { | ||||
| 			showCreateContactDialog(invite.getJid().toString(),invite.getFingerprint()); | ||||
| 			return false; | ||||
| 		} else if (contacts.size() == 1) { | ||||
| @ -1020,13 +1029,13 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU | ||||
| 
 | ||||
| 		boolean invite() { | ||||
| 			if (jid != null) { | ||||
| 				if (muc) { | ||||
| 					showJoinConferenceDialog(jid); | ||||
| 				} else { | ||||
| 					return handleJid(this); | ||||
| 				} | ||||
| 				return handleJid(this); | ||||
| 			} | ||||
| 			return false; | ||||
| 		} | ||||
| 
 | ||||
| 		public boolean isMuc() { | ||||
| 			return muc; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -47,6 +47,7 @@ public class XmppUri { | ||||
| 				// sample : https://conversations.im/i/foo/bar.com | ||||
| 				jid = segments.get(1) + "@" + segments.get(2); | ||||
| 			} | ||||
| 			muc = segments.size() > 1 && "j".equalsIgnoreCase(segments.get(0)); | ||||
| 		} else if ("xmpp".equalsIgnoreCase(scheme)) { | ||||
| 			// sample: xmpp:foo@bar.com | ||||
| 			muc = "join".equalsIgnoreCase(uri.getQuery()); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch