Browse Source

Remove download source folder when empty (#7928)

AntsyLich 2 years ago
parent
commit
5a320d87e8

+ 10 - 0
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt

@@ -6,6 +6,7 @@ import com.hippo.unifile.UniFile
 import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.data.database.models.Chapter
 import eu.kanade.tachiyomi.data.preference.PreferencesHelper
+import eu.kanade.tachiyomi.source.Source
 import eu.kanade.tachiyomi.source.SourceManager
 import kotlinx.coroutines.flow.onEach
 import uy.kohesive.injekt.Injekt
@@ -113,6 +114,15 @@ class DownloadCache(
         return 0
     }
 
+    /**
+     * Returns true if source has download
+     *
+     * @param source the source to check.
+     */
+    fun sourceHasDownload(source: Source): Boolean {
+        return rootDir.files[source.id]?.files?.size?.let { it > 0 } ?: false
+    }
+
     /**
      * Checks if the cache needs a renewal and performs it if needed.
      */

+ 4 - 0
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt

@@ -281,6 +281,10 @@ class DownloadManager(
             cache.removeChapters(filteredChapters, manga)
             if (cache.getDownloadCount(manga) == 0) { // Delete manga directory if empty
                 chapterDirs.firstOrNull()?.parentFile?.delete()
+                cache.removeManga(manga)
+            }
+            if (!cache.sourceHasDownload(source)) { // Delete source directory if empty
+                provider.findSourceDir(source)?.delete()
             }
         }
         return filteredChapters