From 2b813ad2ce4f7168d1f471a7e2e1bad2aae6ebe6 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 30 Aug 2022 08:50:17 +0200 Subject: [PATCH] Check storage space on start --- .../java/eu/faircode/email/ActivityMain.java | 40 ++++++++++ .../faircode/email/FragmentOptionsMisc.java | 3 +- .../main/java/eu/faircode/email/Helper.java | 2 +- app/src/main/res/layout/activity_space.xml | 78 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 5 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/layout/activity_space.xml diff --git a/app/src/main/java/eu/faircode/email/ActivityMain.java b/app/src/main/java/eu/faircode/email/ActivityMain.java index ef8e1866ce..ccbf1fda51 100644 --- a/app/src/main/java/eu/faircode/email/ActivityMain.java +++ b/app/src/main/java/eu/faircode/email/ActivityMain.java @@ -28,6 +28,7 @@ import android.content.res.Configuration; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.provider.Settings; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -46,11 +47,50 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack private static final long SPLASH_DELAY = 1500L; // milliseconds private static final long SERVICE_START_DELAY = 5 * 1000L; // milliseconds + private static final long IGNORE_STORAGE_SPACE = 24 * 60 * 60 * 1000L; // milliseconds @Override protected void onCreate(Bundle savedInstanceState) { + long now = new Date().getTime(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean accept_unsupported = prefs.getBoolean("accept_unsupported", false); + long accept_space = prefs.getLong("accept_space", 0); + + long cake = Helper.getAvailableStorageSpace(); + if (cake < Helper.MIN_REQUIRED_SPACE && accept_space < now) { + setTheme(R.style.AppThemeBlueOrangeLight); + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_space); + + TextView tvRemaining = findViewById(R.id.tvRemaining); + tvRemaining.setText(getString(R.string.app_cake_remaining, + Helper.humanReadableByteCount(cake))); + + TextView tvRequired = findViewById(R.id.tvRequired); + tvRequired.setText(getString(R.string.app_cake_required, + Helper.humanReadableByteCount(Helper.MIN_REQUIRED_SPACE, true))); + + Button btnFix = findViewById(R.id.btnFix); + btnFix.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS); + v.getContext().startActivity(intent); + } + }); + + Button btnContinue = findViewById(R.id.btnContinue); + btnContinue.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + prefs.edit().putLong("accept_space", now + IGNORE_STORAGE_SPACE).commit(); + ApplicationEx.restart(v.getContext(), "accept_space"); + } + }); + + return; + } if (!accept_unsupported && !Helper.isSupportedDevice() && diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 5ead8da062..ecfabbbb2b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -267,7 +267,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc "eml_auto_confirm", "open_with_pkg", "open_with_tabs", "gmail_checked", "outlook_checked", - "redmi_note" + "redmi_note", + "accept_space", "accept_unsupported" }; @Override diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index a13db6a2ea..c4c8060405 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -174,7 +174,7 @@ public class Helper { static final float LOW_LIGHT = 0.6f; static final int BUFFER_SIZE = 8192; // Same as in Files class - static final long MIN_REQUIRED_SPACE = 250 * 1024L * 1024L; + static final long MIN_REQUIRED_SPACE = 100 * 1000L * 1000L; static final int AUTOLOCK_GRACE = 15; // seconds static final long PIN_FAILURE_DELAY = 3; // seconds diff --git a/app/src/main/res/layout/activity_space.xml b/app/src/main/res/layout/activity_space.xml new file mode 100644 index 0000000000..1319cabf1d --- /dev/null +++ b/app/src/main/res/layout/activity_space.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + +