summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/fr/gouv/etalab
diff options
context:
space:
mode:
authorstom79 <tschneider.ac@gmail.com>2019-01-18 16:11:48 +0100
committerstom79 <tschneider.ac@gmail.com>2019-01-18 16:11:48 +0100
commit5ed01ddb4896162fbeeddc69e90f2cb9050bb1ca (patch)
tree6bff1b512963295ce19087d31af20f27054bc465 /app/src/main/java/fr/gouv/etalab
parent8201b49343c96e88401bb5b2af539dd4d5842340 (diff)
Fix cache feature
Diffstat (limited to 'app/src/main/java/fr/gouv/etalab')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java52
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java66
2 files changed, 67 insertions, 51 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java
index b28ea42e8..cca79c924 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java
@@ -81,13 +81,11 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
-import java.util.Locale;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -1258,55 +1256,7 @@ public abstract class BaseMainActivity extends BaseActivity
startActivity(intent);
return true;
case R.id.action_cache:
-
- new AsyncTask<Void, Void, Void>() {
- private float cacheSize;
- @Override
- protected Void doInBackground(Void... params) {
- long sizeCache = Helper.cacheSize(getCacheDir().getParentFile());
- cacheSize = 0;
- if( sizeCache > 0 ) {
- cacheSize = (float) sizeCache / 1000000.0f;
- }
- return null;
- }
- @Override
- protected void onPostExecute(Void result){
- AlertDialog.Builder builder = new AlertDialog.Builder(BaseMainActivity.this, style);
- builder.setTitle(R.string.cache_title);
-
- final float finalCacheSize = cacheSize;
- builder.setMessage(getString(R.string.cache_message, String.format("%s %s", String.format(Locale.getDefault(), "%.2f", cacheSize), getString(R.string.cache_units))))
- .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // continue with delete
- AsyncTask.execute(new Runnable() {
- @Override
- public void run() {
- try {
- String path = getCacheDir().getParentFile().getPath();
- File dir = new File(path);
- if (dir.isDirectory()) {
- Helper.deleteDir(dir);
- }
- } catch (Exception ignored) {}
- }
- });
- Toasty.success(BaseMainActivity.this, getString(R.string.toast_cache_clear,String.format("%s %s", String.format(Locale.getDefault(), "%.2f", finalCacheSize), getString(R.string.cache_units))), Toast.LENGTH_LONG).show();
- dialog.dismiss();
- }
- })
- .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- })
- .setIcon(android.R.drawable.ic_dialog_alert)
- .show();
- }
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-
-
+ new Helper.CacheTask(BaseMainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
return true;
case R.id.action_size:
final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
index 75e224b55..a798e13cf 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
@@ -130,6 +130,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.lang.ref.WeakReference;
import java.lang.reflect.Type;
import java.net.InetAddress;
import java.security.MessageDigest;
@@ -3455,4 +3456,69 @@ public class Helper {
}
}
+
+ public static class CacheTask extends AsyncTask<Void, Void, Void> {
+ private float cacheSize;
+ private WeakReference<Context> contextReference;
+
+ public CacheTask(Context context) {
+ contextReference = new WeakReference<>(context);
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ long sizeCache = Helper.cacheSize(contextReference.get().getCacheDir().getParentFile());
+ cacheSize = 0;
+ if (sizeCache > 0) {
+ cacheSize = (float) sizeCache / 1000000.0f;
+ }
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ int style;
+ SharedPreferences sharedpreferences = contextReference.get().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ final int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ if (theme == Helper.THEME_DARK) {
+ style = R.style.DialogDark;
+ } else if (theme == Helper.THEME_BLACK) {
+ style = R.style.DialogBlack;
+ } else {
+ style = R.style.Dialog;
+ }
+ AlertDialog.Builder builder = new AlertDialog.Builder(contextReference.get(), style);
+ builder.setTitle(R.string.cache_title);
+
+ final float finalCacheSize = cacheSize;
+ builder.setMessage(contextReference.get().getString(R.string.cache_message, String.format("%s %s", String.format(Locale.getDefault(), "%.2f", cacheSize), contextReference.get().getString(R.string.cache_units))))
+ .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ // continue with delete
+ AsyncTask.execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ String path = contextReference.get().getCacheDir().getParentFile().getPath();
+ File dir = new File(path);
+ if (dir.isDirectory()) {
+ Helper.deleteDir(dir);
+ }
+ } catch (Exception ignored) {
+ }
+ }
+ });
+ Toasty.success(contextReference.get(), contextReference.get().getString(R.string.toast_cache_clear, String.format("%s %s", String.format(Locale.getDefault(), "%.2f", finalCacheSize), contextReference.get().getString(R.string.cache_units))), Toast.LENGTH_LONG).show();
+ dialog.dismiss();
+ }
+ })
+ .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ })
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .show();
+ }
+ }
}