From 9f02bbbba1d86910d8f59eb728825e53651fc907 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Mon, 26 Feb 2018 15:46:51 -0300
Subject: [PATCH] Do not show splash screen when signed in

---
 .../org/briarproject/briar/android/AppModule.java  |  1 +
 .../briar/android/controller/ConfigController.java |  3 +++
 .../android/controller/ConfigControllerImpl.java   |  6 ++++++
 .../briar/android/navdrawer/NavDrawerActivity.java | 14 --------------
 .../briar/android/splash/SplashScreenActivity.java | 13 +++++++++----
 5 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
index eba5d57eec..67af25ac69 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
@@ -94,6 +94,7 @@ public class AppModule {
 
 			@Override
 			public boolean databaseExists() {
+				// FIXME should not run on UiThread #620
 				if (!dir.isDirectory()) return false;
 				File[] files = dir.listFiles();
 				return files != null && files.length > 0;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigController.java
index d6bc554f6e..07b32b0e2f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigController.java
@@ -17,4 +17,7 @@ public interface ConfigController {
 	void deleteAccount(Context ctx);
 
 	boolean accountExists();
+
+	boolean accountSignedIn();
+
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java
index 0af60bb981..3c19794441 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java
@@ -52,4 +52,10 @@ public class ConfigControllerImpl implements ConfigController {
 		String hex = getEncryptedDatabaseKey();
 		return hex != null && databaseConfig.databaseExists();
 	}
+
+	@Override
+	public boolean accountSignedIn() {
+		return databaseConfig.getEncryptionKey() != null;
+	}
+
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
index d083343e91..dcc42f6c33 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
@@ -46,8 +46,6 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import static android.os.Build.MANUFACTURER;
-import static android.os.Build.VERSION.SDK_INT;
 import static android.support.v4.app.FragmentManager.POP_BACK_STACK_INCLUSIVE;
 import static android.support.v4.view.GravityCompat.START;
 import static android.support.v4.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED;
@@ -214,18 +212,6 @@ public class NavDrawerActivity extends BriarActivity implements
 	public void onBackPressed() {
 		if (drawerLayout.isDrawerOpen(START)) {
 			drawerLayout.closeDrawer(START);
-		} else if (getSupportFragmentManager().getBackStackEntryCount() == 0 &&
-				getSupportFragmentManager()
-						.findFragmentByTag(ContactListFragment.TAG) != null) {
-			if (SDK_INT == 19 && MANUFACTURER.equalsIgnoreCase("Samsung")) {
-				// workaround for #1116 causes splash screen to show again
-				super.onBackPressed();
-			} else {
-				Intent i = new Intent(Intent.ACTION_MAIN);
-				i.addCategory(Intent.CATEGORY_HOME);
-				i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-				startActivity(i);
-			}
 		} else if (getSupportFragmentManager().getBackStackEntryCount() == 0 &&
 				getSupportFragmentManager()
 						.findFragmentByTag(ContactListFragment.TAG) == null) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java
index 7c19f3c780..9c45353134 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java
@@ -43,10 +43,15 @@ public class SplashScreenActivity extends BaseActivity {
 
 		setContentView(R.layout.splash);
 
-		new Handler().postDelayed(() -> {
-			startNextActivity();
-			supportFinishAfterTransition();
-		}, 500);
+		if (configController.accountSignedIn()) {
+			startActivity(new Intent(this, NavDrawerActivity.class));
+			finish();
+		} else {
+			new Handler().postDelayed(() -> {
+				startNextActivity();
+				supportFinishAfterTransition();
+			}, 500);
+		}
 	}
 
 	@Override
-- 
GitLab