made conference invite work again

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java |  1 
src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java                  | 24 
src/main/java/eu/siacs/conversations/ui/ConversationActivity.java                   |  6 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java                   | 20 
src/main/java/eu/siacs/conversations/ui/XmppActivity.java                           | 19 
5 files changed, 47 insertions(+), 23 deletions(-)

Detailed changes

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

@@ -1,5 +1,6 @@
 package eu.siacs.conversations.ui;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
@@ -25,7 +26,9 @@ import eu.siacs.conversations.Config;
 import eu.siacs.conversations.R;
 import eu.siacs.conversations.entities.Account;
 import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
 import eu.siacs.conversations.entities.ListItem;
+import eu.siacs.conversations.entities.MucOptions;
 import eu.siacs.conversations.xmpp.jid.Jid;
 
 public class ChooseContactActivity extends AbstractSearchableListItemActivity {
@@ -246,4 +249,25 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity {
 		}
 		this.mKnownHosts = xmppConnectionService.getKnownHosts();
 	}
+
+	public static Intent create(Activity activity, Conversation conversation) {
+		final Intent intent = new Intent(activity, ChooseContactActivity.class);
+		List<String> contacts = new ArrayList<>();
+		if (conversation.getMode() == Conversation.MODE_MULTI) {
+			for (MucOptions.User user : conversation.getMucOptions().getUsers(false)) {
+				Jid jid = user.getRealJid();
+				if (jid != null) {
+					contacts.add(jid.toBareJid().toString());
+				}
+			}
+		} else {
+			contacts.add(conversation.getJid().toBareJid().toString());
+		}
+		intent.putExtra("filter_contacts", contacts.toArray(new String[contacts.size()]));
+		intent.putExtra("conversation", conversation.getUuid());
+		intent.putExtra("multiple", true);
+		intent.putExtra("show_enter_jid", true);
+		intent.putExtra(EXTRA_ACCOUNT, conversation.getAccount().getJid().toBareJid().toString());
+		return intent;
+	}
 }

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

@@ -561,6 +561,12 @@ public class ConversationActivity extends XmppActivity implements OnConversation
 		}
 	}
 
+	@Override
+	public void switchToConversation(Conversation conversation) {
+		Log.d(Config.LOGTAG,"override");
+		openConversation(conversation,null);
+	}
+
 	@Override
 	public void onConversationRead(Conversation conversation) {
 		if (!mActivityPaused && pendingViewIntent.peek() == null) {

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

@@ -50,8 +50,6 @@ import android.widget.PopupMenu;
 import android.widget.TextView.OnEditorActionListener;
 import android.widget.Toast;
 
-import org.openintents.openpgp.util.OpenPgpApi;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -102,8 +100,7 @@ import eu.siacs.conversations.xmpp.jid.InvalidJidException;
 import eu.siacs.conversations.xmpp.jid.Jid;
 
 import static eu.siacs.conversations.ui.XmppActivity.EXTRA_ACCOUNT;
-import static eu.siacs.conversations.ui.XmppActivity.REQUEST_ANNOUNCE_PGP;
-import static eu.siacs.conversations.ui.XmppActivity.REQUEST_CHOOSE_PGP_ID;
+import static eu.siacs.conversations.ui.XmppActivity.REQUEST_INVITE_TO_CONVERSATION;
 
 
 public class ConversationFragment extends XmppFragment implements EditMessage.KeyboardListener {
@@ -723,6 +720,15 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
 				Uri geo = Uri.parse("geo:" + String.valueOf(latitude) + "," + String.valueOf(longitude));
 				attachLocationToConversation(conversation, geo);
 				break;
+			case REQUEST_INVITE_TO_CONVERSATION:
+				XmppActivity.ConferenceInvite invite = XmppActivity.ConferenceInvite.parse(data);
+				if (invite != null) {
+					if (invite.execute(activity)) {
+						activity.mToast = Toast.makeText(activity, R.string.creating_conference, Toast.LENGTH_LONG);
+						activity.mToast.show();
+					}
+				}
+				break;
 		}
 	}
 
@@ -1075,7 +1081,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
 				startActivity(intent);
 				break;
 			case R.id.action_invite:
-				activity.inviteToConversation(conversation);
+				startActivityForResult(ChooseContactActivity.create(activity,conversation), REQUEST_INVITE_TO_CONVERSATION);
 				break;
 			case R.id.action_clear_history:
 				clearHistoryDialog(conversation);
@@ -2347,6 +2353,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
 				setScrollPosition(scrollState);
 			}
 		}
+		ActivityResult activityResult = postponedActivityResult.pop();
+		if (activityResult != null) {
+			handleActivityResult(activityResult);
+		}
 	}
 
 	public void clearPending() {

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

@@ -568,24 +568,7 @@ public abstract class XmppActivity extends AppCompatActivity {
 	}
 
 	protected void inviteToConversation(Conversation conversation) {
-		Intent intent = new Intent(this, ChooseContactActivity.class);
-		List<String> contacts = new ArrayList<>();
-		if (conversation.getMode() == Conversation.MODE_MULTI) {
-			for (MucOptions.User user : conversation.getMucOptions().getUsers(false)) {
-				Jid jid = user.getRealJid();
-				if (jid != null) {
-					contacts.add(jid.toBareJid().toString());
-				}
-			}
-		} else {
-			contacts.add(conversation.getJid().toBareJid().toString());
-		}
-		intent.putExtra("filter_contacts", contacts.toArray(new String[contacts.size()]));
-		intent.putExtra("conversation", conversation.getUuid());
-		intent.putExtra("multiple", true);
-		intent.putExtra("show_enter_jid", true);
-		intent.putExtra(EXTRA_ACCOUNT, conversation.getAccount().getJid().toBareJid().toString());
-		startActivityForResult(intent, REQUEST_INVITE_TO_CONVERSATION);
+		startActivityForResult(ChooseContactActivity.create(this,conversation), REQUEST_INVITE_TO_CONVERSATION);
 	}
 
 	protected void announcePgp(Account account, final Conversation conversation, Intent intent, final Runnable onSuccess) {