From c473dab127296231db615746464954f37ef2fd2c Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 25 Jun 2022 08:53:12 +0200 Subject: [PATCH] Fixed last activity edge cases --- .../main/java/eu/faircode/email/ActivityBase.java | 7 +++++-- .../main/java/eu/faircode/email/ActivityMain.java | 14 +++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 9c0a3a9b5e..9fe67226bd 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -265,6 +265,11 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc visible = true; + if (!(this instanceof ActivityMain)) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + prefs.edit().putString("last_activity", this.getClass().getName()).apply(); + } + boolean contacts = hasPermission(Manifest.permission.READ_CONTACTS); if (this.contacts != contacts && !this.getClass().equals(ActivitySetup.class) && @@ -282,8 +287,6 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc super.onPause(); visible = false; - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - prefs.edit().putString("last_activity", this.getClass().getName()).apply(); checkAuthentication(false); } diff --git a/app/src/main/java/eu/faircode/email/ActivityMain.java b/app/src/main/java/eu/faircode/email/ActivityMain.java index c88382c1a8..81dac22c20 100644 --- a/app/src/main/java/eu/faircode/email/ActivityMain.java +++ b/app/src/main/java/eu/faircode/email/ActivityMain.java @@ -174,11 +174,23 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack @Override protected Boolean onExecute(Context context, Bundle args) { + DB db = DB.getInstance(context); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + String last_activity = prefs.getString("last_activity", null); + long composing = prefs.getLong("last_composing", -1L); + if (ActivityCompose.class.getName().equals(last_activity) && composing >= 0) { + EntityMessage draft = db.message().getMessage(composing); + if (draft == null || draft.ui_hide) + prefs.edit() + .remove("last_activity") + .remove("last_composing") + .apply(); + } + if (prefs.getBoolean("has_accounts", false)) return true; - DB db = DB.getInstance(context); List accounts = db.account().getSynchronizingAccounts(null); boolean hasAccounts = (accounts != null && accounts.size() > 0);