From cd0333d61bd2da73fd194954c165ec80ffcedb12 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 14 Mar 2021 21:13:59 +0100 Subject: [PATCH] Added setting for weekly update check --- .../java/eu/faircode/email/ActivityView.java | 13 +++++++++--- .../faircode/email/FragmentOptionsMisc.java | 20 ++++++++++++++++--- .../main/res/layout/fragment_options_misc.xml | 19 +++++++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 46 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index d691a12c64..7a88ae1bb6 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -139,7 +139,8 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB private static final int UPDATE_TIMEOUT = 15 * 1000; // milliseconds private static final long EXIT_DELAY = 2500L; // milliseconds - static final long UPDATE_INTERVAL = (BuildConfig.BETA_RELEASE ? 4 : 12) * 3600 * 1000L; // milliseconds + static final long UPDATE_DAILY = (BuildConfig.BETA_RELEASE ? 4 : 12) * 3600 * 1000L; // milliseconds + static final long UPDATE_WEEKLY = 7 * 24 * 3600 * 1000L; // milliseconds @Override @SuppressLint("MissingSuperCall") @@ -856,11 +857,17 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB return; long now = new Date().getTime(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - if (!always && !prefs.getBoolean("updates", true)) + boolean updates = prefs.getBoolean("updates", true); + boolean weekly = prefs.getBoolean("weekly", false); + long last_update_check = prefs.getLong("last_update_check", 0); + + if (!always && !updates) return; - if (!always && prefs.getLong("last_update_check", 0) + UPDATE_INTERVAL > now) + if (!always && last_update_check + (weekly ? UPDATE_WEEKLY : UPDATE_DAILY) > now) return; + prefs.edit().putLong("last_update_check", now).apply(); Bundle args = new Bundle(); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index af2bfabcdf..0da59d95f6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -95,6 +95,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private ImageButton ibResetLanguage; private SwitchCompat swWatchdog; private SwitchCompat swUpdates; + private SwitchCompat swCheckWeekly; private SwitchCompat swExperiments; private TextView tvExperimentsHint; private SwitchCompat swCrashReports; @@ -126,6 +127,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private Button btnCiphers; private Button btnFiles; + private Group grpUpdates; private Group grpDebug; private NumberFormat NF = NumberFormat.getNumberInstance(); @@ -193,6 +195,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc ibResetLanguage = view.findViewById(R.id.ibResetLanguage); swWatchdog = view.findViewById(R.id.swWatchdog); swUpdates = view.findViewById(R.id.swUpdates); + swCheckWeekly = view.findViewById(R.id.swWeekly); swExperiments = view.findViewById(R.id.swExperiments); tvExperimentsHint = view.findViewById(R.id.tvExperimentsHint); swCrashReports = view.findViewById(R.id.swCrashReports); @@ -224,6 +227,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc btnCiphers = view.findViewById(R.id.btnCiphers); btnFiles = view.findViewById(R.id.btnFiles); + grpUpdates = view.findViewById(R.id.grpUpdates); grpDebug = view.findViewById(R.id.grpDebug); setOptions(); @@ -401,6 +405,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { prefs.edit().putBoolean("updates", checked).apply(); + swCheckWeekly.setEnabled(checked); if (!checked) { NotificationManager nm = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE); nm.cancel(Helper.NOTIFICATION_UPDATE); @@ -408,6 +413,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + swCheckWeekly.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("weekly", checked).apply(); + } + }); + tvExperimentsHint.setPaintFlags(tvExperimentsHint.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); tvExperimentsHint.setOnClickListener(new View.OnClickListener() { @Override @@ -898,9 +910,11 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc swWatchdog.setChecked(prefs.getBoolean("watchdog", true)); swUpdates.setChecked(prefs.getBoolean("updates", true)); - swUpdates.setVisibility( - Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext()) - ? View.GONE : View.VISIBLE); + swCheckWeekly.setChecked(prefs.getBoolean("weekly", false)); + swCheckWeekly.setEnabled(swUpdates.isChecked()); + grpUpdates.setVisibility(!BuildConfig.DEBUG && + (Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext())) + ? View.GONE : View.VISIBLE); swExperiments.setChecked(prefs.getBoolean("experiments", false)); swCrashReports.setChecked(prefs.getBoolean("crash_reports", false)); tvUuid.setText(prefs.getString("uuid", null)); diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index e5feb2d615..d52ddac2d3 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -279,6 +279,17 @@ app:layout_constraintTop_toBottomOf="@id/swWatchdog" app:switchPadding="12dp" /> + + + + SASL (debug only) Automatically optimize Check for GitHub updates + Check weekly instead of daily Try experimental features Limit parallel database access WAL (debug only)