From f8a9d56aa7a7ba6fa313a2323dab87ce800726e5 Mon Sep 17 00:00:00 2001 From: Marcus Nilsson Date: Mon, 25 Sep 2023 18:25:34 +0200 Subject: [PATCH] Don't clean up podcast if it's downloaded This patch makes podcasts that are downloaded not get removed when cleaning up database when oversized. Signed-off-by: Marcus Nilsson --- .../owncloudnewsreader/database/DatabaseConnectionOrm.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java index af92b048f..662969432 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java @@ -70,6 +70,8 @@ public enum SORT_DIRECTION { asc, desc } private final static int PageSize = 25; + private Context context; + protected @Inject @Named("databaseFileName") String databasePath; public void resetDatabase() { @@ -80,6 +82,7 @@ public void resetDatabase() { } public DatabaseConnectionOrm(Context context) { + this.context = context; if(databasePath == null) { ((NewsReaderApplication) context.getApplicationContext()).getAppComponent().injectDatabaseConnection(this); } @@ -782,9 +785,13 @@ public void clearDatabaseOverSize() if(overSize > read) overSize = read; + var downloadedPodcastsFingerprints = NewsFileUtils.getDownloadedPodcastsFingerprints(context); + var files = Arrays.stream(downloadedPodcastsFingerprints).map((f) -> "\"" + f + "\"").collect(Collectors.toList()); + String sqlStatement = "DELETE FROM " + RssItemDao.TABLENAME + " WHERE " + RssItemDao.Properties.Id.columnName + " IN (SELECT " + RssItemDao.Properties.Id.columnName + " FROM " + RssItemDao.TABLENAME + " WHERE " + RssItemDao.Properties.Read_temp.columnName + " = 1 AND " + RssItemDao.Properties.Starred_temp.columnName + " != 1 " + + " AND " + RssItemDao.Properties.Fingerprint.columnName + " NOT IN (" + String.join(",", files) + ")" + // This means that the article has downloaded podcast media " AND " + RssItemDao.Properties.Id.columnName + " NOT IN (SELECT " + CurrentRssItemViewDao.Properties.RssItemId.columnName + " FROM " + CurrentRssItemViewDao.TABLENAME + ")" + " ORDER BY " + RssItemDao.Properties.Id.columnName + " asc LIMIT " + overSize + ")"; daoSession.getDatabase().execSQL(sqlStatement);