diff --git a/res/layout/preferences_dialog.xml b/res/layout/preferences_dialog.xml
index 2537dccbc208b98860d96dd7809b0f4eef1d9804..170e2d9b2304959c19cb7d0c48bdd7d935a03008 100644
--- a/res/layout/preferences_dialog.xml
+++ b/res/layout/preferences_dialog.xml
@@ -28,6 +28,14 @@
android:layout_weight="1" />
+
+
/e/OS\n%1$s
Available updates:
Current version:
+ See all available updates
\ No newline at end of file
diff --git a/src/org/lineageos/updater/UpdatesActivity.java b/src/org/lineageos/updater/UpdatesActivity.java
index 34d65a3521728c3e89ee1fd8d733276c819e7854..75074bdaf481711bd3d620c016bdabde82189ab5 100644
--- a/src/org/lineageos/updater/UpdatesActivity.java
+++ b/src/org/lineageos/updater/UpdatesActivity.java
@@ -485,6 +485,7 @@ public class UpdatesActivity extends UpdatesListActivity {
Spinner autoCheckInterval = view.findViewById(R.id.preferences_auto_updates_check_interval);
SwitchCompat autoDelete = view.findViewById(R.id.preferences_auto_delete_updates);
SwitchCompat dataWarning = view.findViewById(R.id.preferences_mobile_data_warning);
+ SwitchCompat allUpdates = view.findViewById(R.id.preferences_all_updates);
SwitchCompat abPerfMode = view.findViewById(R.id.preferences_ab_perf_mode);
SwitchCompat updateRecovery = view.findViewById(R.id.preferences_update_recovery);
@@ -514,6 +515,7 @@ public class UpdatesActivity extends UpdatesListActivity {
autoDelete.setChecked(prefs.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, true));
dataWarning.setChecked(prefs.getBoolean(Constants.PREF_MOBILE_DATA_WARNING, true));
+ allUpdates.setChecked(prefs.getBoolean(Constants.PREF_ALL_UPDATES, false));
abPerfMode.setChecked(prefs.getBoolean(Constants.PREF_AB_PERF_MODE,
getResources().getBoolean(R.bool.config_prioritizeUpdateProcess)));
@@ -554,6 +556,7 @@ public class UpdatesActivity extends UpdatesListActivity {
autoCheckInterval.getSelectedItemPosition())
.putBoolean(Constants.PREF_AUTO_DELETE_UPDATES, autoDelete.isChecked())
.putBoolean(Constants.PREF_MOBILE_DATA_WARNING, dataWarning.isChecked())
+ .putBoolean(Constants.PREF_ALL_UPDATES, allUpdates.isChecked())
.putBoolean(Constants.PREF_AB_PERF_MODE, abPerfMode.isChecked())
.apply();
diff --git a/src/org/lineageos/updater/misc/Constants.java b/src/org/lineageos/updater/misc/Constants.java
index a083dce80f7cffce337da8eea87f133df2e5190d..13ed1901b542fb0410704f3adc7601b6bc9fa977 100644
--- a/src/org/lineageos/updater/misc/Constants.java
+++ b/src/org/lineageos/updater/misc/Constants.java
@@ -34,6 +34,7 @@ public final class Constants {
public static final String PREF_LAST_UPDATE_CHECK = "last_update_check";
public static final String PREF_AUTO_UPDATES_CHECK_INTERVAL = "auto_updates_check_interval";
public static final String PREF_AUTO_DELETE_UPDATES = "auto_delete_updates";
+ public static final String PREF_ALL_UPDATES = "all_updates";
public static final String PREF_AB_PERF_MODE = "ab_perf_mode";
public static final String PREF_MOBILE_DATA_WARNING = "pref_mobile_data_warning";
public static final String PREF_NEEDS_REBOOT_ID = "needs_reboot_id";
diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java
index d3994c634b827604297ec82eca2188986c32c8e9..5dc759f9eefa2d78dc8f7b8967669ba3e0bf886c 100644
--- a/src/org/lineageos/updater/misc/Utils.java
+++ b/src/org/lineageos/updater/misc/Utils.java
@@ -269,8 +269,16 @@ public class Utils {
serverUrl = context.getString(R.string.updater_server_url);
}
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean allUpdates = preferences.getBoolean(Constants.PREF_ALL_UPDATES, false);
+ if (Utils.isDevModeOn(context)) {
+ allUpdates = true;
+ }
+
if (anonHash != null && !anonHash.isEmpty()) {
- serverUrl += "?ota_anon_hash=" + anonHash;
+ serverUrl += "?ota_anon_hash=" + anonHash + "&strict=" + !allUpdates;
+ } else {
+ serverUrl += "?strict=" + !allUpdates;
}
return serverUrl.replace("{device}", device)