diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java
index 8db8f0cb90..2676de785d 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java
@@ -67,6 +67,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
private SwitchCompat swAdguard;
private Button btnAdguard;
private TextView tvAdguardTime;
+ private SwitchCompat swAdguardAutoUpdate;
private SwitchCompat swCheckLinksDbl;
private SwitchCompat swConfirmFiles;
private SwitchCompat swConfirmImages;
@@ -112,7 +113,8 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
private final static int BIP39_WORDS = 6;
private final static String[] RESET_OPTIONS = new String[]{
- "confirm_links", "sanitize_links", "adguard", "check_links_dbl", "confirm_files",
+ "confirm_links", "sanitize_links", "adguard", "adguard_auto_update",
+ "check_links_dbl", "confirm_files",
"confirm_images", "ask_images", "html_always_images", "confirm_html", "ask_html",
"disable_tracking",
"pin", "biometrics", "biometrics_timeout", "autolock", "autolock_nav",
@@ -139,6 +141,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
swAdguard = view.findViewById(R.id.swAdguard);
btnAdguard = view.findViewById(R.id.btnAdguard);
tvAdguardTime = view.findViewById(R.id.tvAdguardTime);
+ swAdguardAutoUpdate = view.findViewById(R.id.swAdguardAutoUpdate);
swCheckLinksDbl = view.findViewById(R.id.swCheckLinksDbl);
swConfirmFiles = view.findViewById(R.id.swConfirmFiles);
swConfirmImages = view.findViewById(R.id.swConfirmImages);
@@ -256,6 +259,14 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
}
});
+ swAdguardAutoUpdate.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("adguard_auto_update", checked).apply();
+ WorkerAutoUpdate.init(compoundButton.getContext());
+ }
+ });
+
swCheckLinksDbl.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -660,6 +671,8 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
tvAdguardTime.setText(adguard_last < 0 ? null : DF.format(adguard_last));
tvAdguardTime.setVisibility(adguard_last < 0 ? View.GONE : View.VISIBLE);
+ swAdguardAutoUpdate.setChecked(prefs.getBoolean("adguard_auto_update", false));
+
swCheckLinksDbl.setChecked(prefs.getBoolean("check_links_dbl", BuildConfig.PLAY_STORE_RELEASE));
swCheckLinksDbl.setEnabled(swConfirmLinks.isChecked());
swConfirmFiles.setChecked(prefs.getBoolean("confirm_files", true));
diff --git a/app/src/main/java/eu/faircode/email/WorkerAutoUpdate.java b/app/src/main/java/eu/faircode/email/WorkerAutoUpdate.java
index bdc570b946..2e7b685fc6 100644
--- a/app/src/main/java/eu/faircode/email/WorkerAutoUpdate.java
+++ b/app/src/main/java/eu/faircode/email/WorkerAutoUpdate.java
@@ -49,22 +49,49 @@ public class WorkerAutoUpdate extends Worker {
public Result doWork() {
Thread.currentThread().setPriority(THREAD_PRIORITY_BACKGROUND);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ boolean adguard_auto_update = prefs.getBoolean("adguard_auto_update", false);
+ boolean disconnect_auto_update = prefs.getBoolean("disconnect_auto_update", false);
+
try {
Log.i("Auto updating");
- DisconnectBlacklist.download(getApplicationContext());
+
+ Throwable adguard = null;
+ if (adguard_auto_update)
+ try {
+ Adguard.download(getApplicationContext());
+ } catch (Throwable ex) {
+ Log.e(ex);
+ adguard = ex;
+ }
+
+ Throwable disconnect = null;
+ if (disconnect_auto_update)
+ try {
+ DisconnectBlacklist.download(getApplicationContext());
+ } catch (Throwable ex) {
+ Log.e(ex);
+ disconnect = ex;
+ }
+
+ if (adguard != null)
+ throw adguard;
+ if (disconnect != null)
+ throw disconnect;
+
Log.i("Auto updated");
return Result.success();
} catch (Throwable ex) {
- Log.e(ex);
return Result.failure();
}
}
static void init(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- boolean auto_update = prefs.getBoolean("disconnect_auto_update", false);
+ boolean adguard_auto_update = prefs.getBoolean("adguard_auto_update", false);
+ boolean disconnect_auto_update = prefs.getBoolean("disconnect_auto_update", false);
try {
- if (auto_update) {
+ if (adguard_auto_update || disconnect_auto_update) {
Log.i("Queuing " + getName());
PeriodicWorkRequest.Builder builder =
new PeriodicWorkRequest.Builder(WorkerAutoUpdate.class, UPDATE_INTERVAL, TimeUnit.DAYS)
diff --git a/app/src/main/res/layout/fragment_options_privacy.xml b/app/src/main/res/layout/fragment_options_privacy.xml
index c0fd63997a..882c42f4ab 100644
--- a/app/src/main/res/layout/fragment_options_privacy.xml
+++ b/app/src/main/res/layout/fragment_options_privacy.xml
@@ -163,7 +163,7 @@
app:layout_constraintTop_toBottomOf="@id/btnAdguard" />