diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt index d3016a89a3..c8ee21440d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt @@ -14,6 +14,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.io.File @@ -127,21 +128,25 @@ class CoverCache(val context: Context) { fun deleteCachedCovers() { if (lastClean + renewInterval < System.currentTimeMillis()) { GlobalScope.launch(Dispatchers.IO) { - val directory = onlineCoverDirectory - val size = DiskUtil.getDirectorySize(directory) - if (size <= maxOnlineCacheSize) { - return@launch - } - var deletedSize = 0L - val files = directory.listFiles()?.sortedBy { it.lastModified() }?.iterator() - ?: return@launch - while (files.hasNext()) { - val file = files.next() - deletedSize += file.length() - file.delete() - if (size - deletedSize <= maxOnlineCacheSize) { - break + try { + val directory = onlineCoverDirectory + val size = DiskUtil.getDirectorySize(directory) + if (size <= maxOnlineCacheSize) { + return@launch } + var deletedSize = 0L + val files = directory.listFiles()?.sortedBy { it.lastModified() }?.iterator() + ?: return@launch + while (files.hasNext()) { + val file = files.next() + deletedSize += file.length() + file.delete() + if (size - deletedSize <= maxOnlineCacheSize) { + break + } + } + } catch (e: Exception) { + Timber.e(e) } } lastClean = System.currentTimeMillis() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt index 47e47ac4e1..cde04276b8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt @@ -1079,7 +1079,7 @@ class MangaDetailsController : } else { val favButton = getHeader()?.binding?.favoriteButton ?: return val popup = makeFavPopup(favButton, manga, categories) - popup.show() + popup?.show() } } @@ -1091,11 +1091,12 @@ class MangaDetailsController : return } val popup = makeFavPopup(popupView, manga, presenter.getCategories()) - popupView.setOnTouchListener(popup.dragToOpenListener) + popupView.setOnTouchListener(popup?.dragToOpenListener) } - private fun makeFavPopup(popupView: View, manga: Manga, categories: List): PopupMenu { - val popup = PopupMenu(view!!.context, popupView) + private fun makeFavPopup(popupView: View, manga: Manga, categories: List): PopupMenu? { + val view = view ?: return null + val popup = PopupMenu(view.context, popupView) popup.menu.add(0, 1, 0, R.string.remove_from_library) if (categories.isNotEmpty()) { popup.menu.add(0, 0, 1, R.string.edit_categories)