diff options
author | stom79 <tschneider.ac@gmail.com> | 2019-01-18 16:11:48 +0100 |
---|---|---|
committer | stom79 <tschneider.ac@gmail.com> | 2019-01-18 16:11:48 +0100 |
commit | 5ed01ddb4896162fbeeddc69e90f2cb9050bb1ca (patch) | |
tree | 6bff1b512963295ce19087d31af20f27054bc465 /app/src/main/java/fr/gouv/etalab | |
parent | 8201b49343c96e88401bb5b2af539dd4d5842340 (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.java | 52 | ||||
-rw-r--r-- | app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java | 66 |
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(); + } + } } |