mirror of https://github.com/M66B/FairEmail.git
Added option to check for main updates only
This commit is contained in:
parent
5f5fc90e10
commit
17dd33c6a6
|
@ -724,23 +724,32 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
|
|||
}
|
||||
|
||||
private void checkUpdate(boolean always) {
|
||||
if (Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(this))
|
||||
if (!BuildConfig.DEBUG &&
|
||||
(Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(this)))
|
||||
return;
|
||||
|
||||
long now = new Date().getTime();
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
if (!always && !prefs.getBoolean("updates", true))
|
||||
boolean updates = prefs.getBoolean("updates", true);
|
||||
boolean updates_main = prefs.getBoolean("updates_main", 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 + UPDATE_INTERVAL > now)
|
||||
return;
|
||||
|
||||
prefs.edit().putLong("last_update_check", now).apply();
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putBoolean("always", always);
|
||||
args.putBoolean("updates_main", updates_main);
|
||||
|
||||
new SimpleTask<UpdateInfo>() {
|
||||
@Override
|
||||
protected UpdateInfo onExecute(Context context, Bundle args) throws Throwable {
|
||||
boolean updates_main = args.getBoolean("updates_main");
|
||||
|
||||
StringBuilder response = new StringBuilder();
|
||||
HttpsURLConnection urlConnection = null;
|
||||
try {
|
||||
|
@ -774,6 +783,8 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
|
|||
|
||||
JSONObject jroot = new JSONObject(response.toString());
|
||||
|
||||
if (!jroot.has("name") || jroot.isNull("name"))
|
||||
throw new IOException("name field missing");
|
||||
if (!jroot.has("tag_name") || jroot.isNull("tag_name"))
|
||||
throw new IOException("tag_name field missing");
|
||||
if (!jroot.has("html_url") || jroot.isNull("html_url"))
|
||||
|
@ -781,6 +792,10 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
|
|||
if (!jroot.has("assets") || jroot.isNull("assets"))
|
||||
throw new IOException("assets section missing");
|
||||
|
||||
String name = jroot.getString("name");
|
||||
if (updates_main && !name.contains("*"))
|
||||
return null;
|
||||
|
||||
// Get update info
|
||||
UpdateInfo info = new UpdateInfo();
|
||||
info.tag_name = jroot.getString("tag_name");
|
||||
|
@ -791,8 +806,8 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
|
|||
for (int i = 0; i < jassets.length(); i++) {
|
||||
JSONObject jasset = jassets.getJSONObject(i);
|
||||
if (jasset.has("name") && !jasset.isNull("name")) {
|
||||
String name = jasset.getString("name");
|
||||
if (name.endsWith(".apk")) {
|
||||
String filename = jasset.getString("name");
|
||||
if (filename.endsWith(".apk")) {
|
||||
Log.i("Latest version=" + info.tag_name);
|
||||
if (BuildConfig.VERSION_NAME.equals(info.tag_name))
|
||||
return null;
|
||||
|
@ -812,6 +827,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
|
|||
@Override
|
||||
protected void onExecuted(Bundle args, UpdateInfo info) {
|
||||
boolean always = args.getBoolean("always");
|
||||
|
||||
if (info == null) {
|
||||
if (always)
|
||||
ToastEx.makeText(ActivityView.this, BuildConfig.VERSION_NAME, Toast.LENGTH_LONG).show();
|
||||
|
|
|
@ -59,6 +59,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
private SwitchCompat swWatchdog;
|
||||
private SwitchCompat swOptimize;
|
||||
private SwitchCompat swUpdates;
|
||||
private SwitchCompat swUpdatesMain;
|
||||
private SwitchCompat swExperiments;
|
||||
private TextView tvExperimentsHint;
|
||||
private SwitchCompat swCrashReports;
|
||||
|
@ -74,10 +75,11 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
private TextView tvStorageSpace;
|
||||
private TextView tvFingerprint;
|
||||
|
||||
private Group grpUpdates;
|
||||
private Group grpDebug;
|
||||
|
||||
private final static String[] RESET_OPTIONS = new String[]{
|
||||
"fts", "english", "watchdog", "auto_optimize", "updates", "experiments", "crash_reports", "debug"
|
||||
"fts", "english", "watchdog", "auto_optimize", "updates", "updates_main", "experiments", "crash_reports", "debug"
|
||||
};
|
||||
|
||||
private final static String[] RESET_QUESTIONS = new String[]{
|
||||
|
@ -105,6 +107,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
swWatchdog = view.findViewById(R.id.swWatchdog);
|
||||
swOptimize = view.findViewById(R.id.swOptimize);
|
||||
swUpdates = view.findViewById(R.id.swUpdates);
|
||||
swUpdatesMain = view.findViewById(R.id.swUpdatesMain);
|
||||
swExperiments = view.findViewById(R.id.swExperiments);
|
||||
tvExperimentsHint = view.findViewById(R.id.tvExperimentsHint);
|
||||
swCrashReports = view.findViewById(R.id.swCrashReports);
|
||||
|
@ -120,6 +123,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
tvStorageSpace = view.findViewById(R.id.tvStorageSpace);
|
||||
tvFingerprint = view.findViewById(R.id.tvFingerprint);
|
||||
|
||||
grpUpdates = view.findViewById(R.id.grpUpdates);
|
||||
grpDebug = view.findViewById(R.id.grpDebug);
|
||||
|
||||
setOptions();
|
||||
|
@ -207,6 +211,14 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
NotificationManager nm = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.cancel(Helper.NOTIFICATION_UPDATE);
|
||||
}
|
||||
swUpdatesMain.setEnabled(checked);
|
||||
}
|
||||
});
|
||||
|
||||
swUpdatesMain.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
prefs.edit().putBoolean("updates_main", checked).apply();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -384,9 +396,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
swWatchdog.setChecked(prefs.getBoolean("watchdog", true));
|
||||
swOptimize.setChecked(prefs.getBoolean("auto_optimize", false));
|
||||
swUpdates.setChecked(prefs.getBoolean("updates", true));
|
||||
swUpdates.setVisibility(
|
||||
Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext())
|
||||
? View.GONE : View.VISIBLE);
|
||||
swUpdatesMain.setChecked(prefs.getBoolean("updates_main", false));
|
||||
swUpdatesMain.setEnabled(swUpdates.isChecked());
|
||||
swExperiments.setChecked(prefs.getBoolean("experiments", false));
|
||||
swCrashReports.setChecked(prefs.getBoolean("crash_reports", false));
|
||||
tvUuid.setText(prefs.getString("uuid", null));
|
||||
|
@ -403,6 +414,10 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
Helper.humanReadableByteCount(Helper.getTotalStorageSpace(), true)));
|
||||
tvFingerprint.setText(Helper.getFingerprint(getContext()));
|
||||
|
||||
grpUpdates.setVisibility(!BuildConfig.DEBUG &&
|
||||
(Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext()))
|
||||
? View.GONE : View.VISIBLE);
|
||||
|
||||
grpDebug.setVisibility(swDebug.isChecked() || BuildConfig.DEBUG ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
|
|
|
@ -146,6 +146,17 @@
|
|||
app:layout_constraintTop_toBottomOf="@id/swOptimize"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swUpdatesMain"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/title_advanced_updates_main"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/swUpdates"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swExperiments"
|
||||
android:layout_width="0dp"
|
||||
|
@ -156,7 +167,7 @@
|
|||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/swUpdates"
|
||||
app:layout_constraintTop_toBottomOf="@id/swUpdatesMain"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<eu.faircode.email.FixedTextView
|
||||
|
@ -322,6 +333,12 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvStorageSpace" />
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
android:id="@+id/grpUpdates"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:constraint_referenced_ids="swUpdates,swUpdatesMain" />
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
android:id="@+id/grpDebug"
|
||||
android:layout_width="0dp"
|
||||
|
|
|
@ -432,6 +432,7 @@
|
|||
<string name="title_advanced_watchdog">Periodically check if FairEmail is still active</string>
|
||||
<string name="title_advanced_optimize">Automatically optimize settings</string>
|
||||
<string name="title_advanced_updates">Check for updates</string>
|
||||
<string name="title_advanced_updates_main">Check for main updates only</string>
|
||||
<string name="title_advanced_experiments">Try experimental features</string>
|
||||
<string name="title_advanced_crash_reports">Send error reports</string>
|
||||
<string name="title_advanced_debug">Debug mode</string>
|
||||
|
|
Loading…
Reference in New Issue