From d21dff08b8a3c06ed6fd65c28d5ac6953f897e50 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 6 Jul 2022 11:59:52 +0300 Subject: [PATCH] Invalidate DiskLruCache if broken --- .../koitharu/kotatsu/local/data/PagesCache.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/local/data/PagesCache.kt b/app/src/main/java/org/koitharu/kotatsu/local/data/PagesCache.kt index 7aee467a5..10eeea740 100644 --- a/app/src/main/java/org/koitharu/kotatsu/local/data/PagesCache.kt +++ b/app/src/main/java/org/koitharu/kotatsu/local/data/PagesCache.kt @@ -13,9 +13,9 @@ import java.io.InputStream class PagesCache(context: Context) { private val cacheDir = context.externalCacheDir ?: context.cacheDir - private val lruCache = DiskLruCache.create( - cacheDir.subdir(CacheDir.PAGES.dir), - FileSize.MEGABYTES.convert(200, FileSize.BYTES), + private val lruCache = createDiskLruCacheSafe( + dir = cacheDir.subdir(CacheDir.PAGES.dir), + size = FileSize.MEGABYTES.convert(200, FileSize.BYTES), ) operator fun get(url: String): File? { @@ -60,4 +60,14 @@ class PagesCache(context: Context) { progress.value = (bytesCopied.toDouble() / contentLength.toDouble()).toFloat() } } +} + +private fun createDiskLruCacheSafe(dir: File, size: Long): DiskLruCache { + return try { + DiskLruCache.create(dir, size) + } catch (e: Exception) { + dir.deleteRecursively() + dir.mkdir() + DiskLruCache.create(dir, size) + } } \ No newline at end of file