From db2d965006d3ec9a208fa1a5ca86b0c150f49be3 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 6 Jul 2016 13:56:22 -0300
Subject: [PATCH] Show Snackbar after introduction request has been sent

Closes #360
---
 briar-android/res/values/strings.xml          |  1 +
 .../android/contact/ConversationActivity.java | 24 +++++++++++++++----
 .../introduction/IntroductionActivity.java    |  4 ++--
 .../IntroductionMessageFragment.java          |  6 +++--
 4 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml
index 1618f97e34..ade709eef6 100644
--- a/briar-android/res/values/strings.xml
+++ b/briar-android/res/values/strings.xml
@@ -190,6 +190,7 @@
 	<string name="introduction_message_text">You can compose a message that will be sent to %1$s and %2$s along with your introduction:</string>
 	<string name="introduction_message_hint">Type message (optional)</string>
 	<string name="introduction_button">Make Introduction</string>
+	<string name="introduction_sent">Your introduction has been sent.</string>
 	<string name="introduction_error">There was an error making the introduction.</string>
 	<string name="introduction_response_error">Error when responding to introduction</string>
 	<string name="introduction_warn_different_identities_title">Warning: Different Identities</string>
diff --git a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
index 46a40ba0f7..e9c571fd3f 100644
--- a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
@@ -3,6 +3,7 @@ package org.briarproject.android.contact;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.design.widget.Snackbar;
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.app.ActivityOptionsCompat;
 import android.support.v4.content.ContextCompat;
@@ -80,6 +81,7 @@ import javax.inject.Inject;
 import de.hdodenhof.circleimageview.CircleImageView;
 import im.delight.android.identicons.IdenticonDrawable;
 
+import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
 import static android.widget.Toast.LENGTH_SHORT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -92,11 +94,12 @@ public class ConversationActivity extends BriarActivity
 
 	private static final Logger LOG =
 			Logger.getLogger(ConversationActivity.class.getName());
+	private static final int REQUEST_CODE_INTRODUCTION = 1;
 
 	@Inject
 	AndroidNotificationManager notificationManager;
 	@Inject
-	protected ConnectionRegistry connectionRegistry;
+	ConnectionRegistry connectionRegistry;
 	@Inject
 	@CryptoExecutor
 	protected Executor cryptoExecutor;
@@ -182,6 +185,18 @@ public class ConversationActivity extends BriarActivity
 		component.inject(this);
 	}
 
+	@Override
+	protected void onActivityResult(int request, int result, Intent data) {
+		super.onActivityResult(request, result, data);
+
+		if (request == REQUEST_CODE_INTRODUCTION && result == RESULT_OK) {
+			Snackbar snackbar = Snackbar.make(list, R.string.introduction_sent,
+					Snackbar.LENGTH_SHORT);
+			snackbar.getView().setBackgroundResource(R.color.briar_primary);
+			snackbar.show();
+		}
+	}
+
 	@Override
 	public void onResume() {
 		super.onResume();
@@ -223,10 +238,11 @@ public class ConversationActivity extends BriarActivity
 				Intent intent = new Intent(this, IntroductionActivity.class);
 				intent.putExtra(IntroductionActivity.CONTACT_ID,
 						contactId.getInt());
-				ActivityOptionsCompat options = ActivityOptionsCompat
-						.makeCustomAnimation(this, android.R.anim.slide_in_left,
+				ActivityOptionsCompat options =
+						makeCustomAnimation(this, android.R.anim.slide_in_left,
 								android.R.anim.slide_out_right);
-				ActivityCompat.startActivity(this, intent, options.toBundle());
+				ActivityCompat.startActivityForResult(this, intent,
+						REQUEST_CODE_INTRODUCTION, options.toBundle());
 				return true;
 			case R.id.action_social_remove_person:
 				askToRemoveContact();
diff --git a/briar-android/src/org/briarproject/android/introduction/IntroductionActivity.java b/briar-android/src/org/briarproject/android/introduction/IntroductionActivity.java
index b42516e56a..f2227d8262 100644
--- a/briar-android/src/org/briarproject/android/introduction/IntroductionActivity.java
+++ b/briar-android/src/org/briarproject/android/introduction/IntroductionActivity.java
@@ -85,11 +85,11 @@ public class IntroductionActivity extends BriarActivity implements
 		}
 	}
 
-	public int getContactId() {
+	int getContactId() {
 		return contactId;
 	}
 
-	public void showMessageScreen(View view, Contact c1, Contact c2) {
+	void showMessageScreen(View view, Contact c1, Contact c2) {
 
 		IntroductionMessageFragment messageFragment =
 				IntroductionMessageFragment
diff --git a/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java b/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java
index 42e0b93d1e..7b277fb738 100644
--- a/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java
+++ b/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java
@@ -29,6 +29,7 @@ import javax.inject.Inject;
 import de.hdodenhof.circleimageview.CircleImageView;
 import im.delight.android.identicons.IdenticonDrawable;
 
+import static android.app.Activity.RESULT_OK;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static android.widget.Toast.LENGTH_SHORT;
@@ -170,7 +171,7 @@ public class IntroductionMessageFragment extends BaseFragment {
 		});
 	}
 
-	public void onButtonClick(final Contact c1, final Contact c2) {
+	private void onButtonClick(final Contact c1, final Contact c2) {
 		// disable button to prevent accidental double invitations
 		ui.button.setEnabled(false);
 
@@ -179,7 +180,8 @@ public class IntroductionMessageFragment extends BaseFragment {
 
 		// don't wait for the introduction to be made before finishing activity
 		introductionActivity.hideSoftKeyboard(ui.message);
-		introductionActivity.finish();
+		introductionActivity.setResult(RESULT_OK);
+		introductionActivity.supportFinishAfterTransition();
 	}
 
 	private void makeIntroduction(final Contact c1, final Contact c2,
-- 
GitLab