From f0f758cdc40439e7b94ad83fb7c0488daa6ee5b9 Mon Sep 17 00:00:00 2001 From: tom79 Date: Mon, 22 Jul 2019 12:27:46 +0200 Subject: [PATCH] Improve cache deletion --- .../app/fedilab/android/helper/Helper.java | 18 ++++++++++++++---- .../fedilab/android/sqlite/StatusCacheDAO.java | 5 +++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index e25128f51..e321c0c42 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -206,6 +206,8 @@ import app.fedilab.android.client.Entities.Version; import app.fedilab.android.client.Tls12SocketFactory; import app.fedilab.android.fragments.DisplayMutedInstanceFragment; import app.fedilab.android.sqlite.DomainBlockDAO; +import app.fedilab.android.sqlite.StatusCacheDAO; +import app.fedilab.android.sqlite.TimelineCacheDAO; import es.dmoral.toasty.Toasty; import app.fedilab.android.BuildConfig; import app.fedilab.android.R; @@ -2065,14 +2067,17 @@ public class Helper { if( directory == null || directory.length() == 0 ) return -1; for (File file : directory.listFiles()) { - if (file.isFile()) + if (file.isFile()){ try { length += file.length(); - }catch (NullPointerException e){ + } catch (NullPointerException e) { return -1; } - else - length += cacheSize(file); + }else { + if( !file.getName().equals("databases") && !file.getName().equals("shared_prefs")) { + length += cacheSize(file); + } + } } return length; } @@ -3858,6 +3863,11 @@ public class Helper { if (dir.isDirectory()) { Helper.deleteDir(dir); } + SQLiteDatabase db = Sqlite.getInstance(contextReference.get(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); + new StatusCacheDAO(contextReference.get(), db).removeDuplicate(); + Date date = new Date( System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1)); + String dateString = Helper.dateToString(date); + new TimelineCacheDAO(contextReference.get(), db).removeAfterDate(dateString); } catch (Exception ignored) { } } diff --git a/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java b/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java index b7410ae92..58cb15c10 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java @@ -189,6 +189,11 @@ public class StatusCacheDAO { return db.delete(Sqlite.TABLE_STATUSES_CACHE, Sqlite.COL_CACHED_ACTION + " = \""+ cacheType +"\" AND " + Sqlite.COL_STATUS_ID + " = \"" + status.getId() + "\" AND " + Sqlite.COL_INSTANCE + " = \"" + instance + "\" AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null); } + public void removeDuplicate(){ + db.execSQL("DELETE FROM "+Sqlite.TABLE_STATUSES_CACHE+" WHERE "+Sqlite.COL_ID+" NOT IN (SELECT MIN("+Sqlite.COL_ID+") FROM "+Sqlite.TABLE_STATUSES_CACHE+" GROUP BY "+Sqlite.COL_STATUS_ID+","+Sqlite.COL_INSTANCE+")"); + } + + /*** * Remove stored status * @return int