From 391e869d29116320a6ea2fb59e2c9015088c966f Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 5 Jul 2018 11:35:37 -0300
Subject: [PATCH] Also remind to sign-in again after app was upgraded

---
 briar-android/src/main/AndroidManifest.xml            |  3 ++-
 .../briarproject/briar/android/AndroidComponent.java  |  3 ++-
 .../briar/android/BriarApplicationImpl.java           |  2 +-
 .../SignInReminderReceiver.java}                      | 11 ++++++++---
 briar-android/src/main/res/values/strings.xml         |  2 +-
 5 files changed, 14 insertions(+), 7 deletions(-)
 rename briar-android/src/main/java/org/briarproject/briar/android/{BootReceiver.java => login/SignInReminderReceiver.java} (89%)

diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml
index f105d57e97..9ae75930b6 100644
--- a/briar-android/src/main/AndroidManifest.xml
+++ b/briar-android/src/main/AndroidManifest.xml
@@ -26,10 +26,11 @@
 		android:theme="@style/BriarTheme">
 
 		<receiver
-			android:name="org.briarproject.briar.android.BootReceiver"
+			android:name="org.briarproject.briar.android.login.SignInReminderReceiver"
 			android:exported="false">
 			<intent-filter>
 				<action android:name="android.intent.action.BOOT_COMPLETED"/>
+				<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
 			</intent-filter>
 		</receiver>
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
index 778a6f2b95..087aa5ea0c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
@@ -26,6 +26,7 @@ import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.BriarCoreEagerSingletons;
 import org.briarproject.briar.BriarCoreModule;
+import org.briarproject.briar.android.login.SignInReminderReceiver;
 import org.briarproject.briar.android.reporting.BriarReportSender;
 import org.briarproject.briar.api.android.AndroidNotificationManager;
 import org.briarproject.briar.api.android.DozeWatchdog;
@@ -150,7 +151,7 @@ public interface AndroidComponent
 	@IoExecutor
 	Executor ioExecutor();
 
-	void inject(BootReceiver briarService);
+	void inject(SignInReminderReceiver briarService);
 
 	void inject(BriarService briarService);
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java
index 97891c389f..08fc14b5da 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java
@@ -77,7 +77,7 @@ public class BriarApplicationImpl extends Application
 	private final CachingLogHandler logHandler = new CachingLogHandler();
 
 	private AndroidComponent applicationComponent;
-	private SharedPreferences prefs;
+	private volatile SharedPreferences prefs;
 
 	@Override
 	protected void attachBaseContext(Context base) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BootReceiver.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SignInReminderReceiver.java
similarity index 89%
rename from briar-android/src/main/java/org/briarproject/briar/android/BootReceiver.java
rename to briar-android/src/main/java/org/briarproject/briar/android/login/SignInReminderReceiver.java
index 1d1fb1e2c5..e361aeb6e7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/BootReceiver.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SignInReminderReceiver.java
@@ -1,4 +1,4 @@
-package org.briarproject.briar.android;
+package org.briarproject.briar.android.login;
 
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
@@ -12,6 +12,8 @@ import android.support.v4.content.ContextCompat;
 
 import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.briar.R;
+import org.briarproject.briar.android.AndroidComponent;
+import org.briarproject.briar.android.BriarApplication;
 import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
 import org.briarproject.briar.android.settings.SettingsActivity;
 
@@ -20,6 +22,7 @@ import javax.inject.Inject;
 import static android.app.NotificationManager.IMPORTANCE_LOW;
 import static android.content.Context.NOTIFICATION_SERVICE;
 import static android.content.Intent.ACTION_BOOT_COMPLETED;
+import static android.content.Intent.ACTION_MY_PACKAGE_REPLACED;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.os.Build.VERSION.SDK_INT;
@@ -31,7 +34,7 @@ import static org.briarproject.briar.android.settings.SettingsFragment.NOTIFY_SI
 import static org.briarproject.briar.api.android.AndroidNotificationManager.REMINDER_CHANNEL_ID;
 import static org.briarproject.briar.api.android.AndroidNotificationManager.REMINDER_NOTIFICATION_ID;
 
-public class BootReceiver extends BroadcastReceiver {
+public class SignInReminderReceiver extends BroadcastReceiver {
 
 	@Inject
 	DatabaseConfig databaseConfig;
@@ -45,7 +48,9 @@ public class BootReceiver extends BroadcastReceiver {
 		applicationComponent.inject(this);
 
 		String action = intent.getAction();
-		if (action != null && action.equals(ACTION_BOOT_COMPLETED)) {
+		if (action == null) return;
+		if (action.equals(ACTION_BOOT_COMPLETED) ||
+				action.equals(ACTION_MY_PACKAGE_REPLACED)) {
 			if (databaseConfig.databaseExists()) {
 				SharedPreferences prefs = app.getDefaultSharedPreferences();
 				if (prefs.getBoolean(NOTIFY_SIGN_IN, true)) {
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index bf65830691..5977fa52d1 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -375,7 +375,7 @@
 	<!-- Settings Notifications -->
 	<string name="notification_settings_title">Notifications</string>
 	<string name="notify_sign_in_title">Remind me to sign in</string>
-	<string name="notify_sign_in_summary">Shows a reminder when the phone starts</string>
+	<string name="notify_sign_in_summary">Show a reminder when the phone starts or the app got updated</string>
 	<string name="notify_private_messages_setting_title">Private messages</string>
 	<string name="notify_private_messages_setting_summary">Show alerts for private messages</string>
 	<string name="notify_private_messages_setting_summary_26">Configure alerts for private messages</string>
-- 
GitLab