Invalidate DiskLruCache if broken

pull/195/head
Koitharu 4 years ago
parent 5f06c4c3c0
commit d21dff08b8
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -13,9 +13,9 @@ import java.io.InputStream
class PagesCache(context: Context) { class PagesCache(context: Context) {
private val cacheDir = context.externalCacheDir ?: context.cacheDir private val cacheDir = context.externalCacheDir ?: context.cacheDir
private val lruCache = DiskLruCache.create( private val lruCache = createDiskLruCacheSafe(
cacheDir.subdir(CacheDir.PAGES.dir), dir = cacheDir.subdir(CacheDir.PAGES.dir),
FileSize.MEGABYTES.convert(200, FileSize.BYTES), size = FileSize.MEGABYTES.convert(200, FileSize.BYTES),
) )
operator fun get(url: String): File? { operator fun get(url: String): File? {
@ -60,4 +60,14 @@ class PagesCache(context: Context) {
progress.value = (bytesCopied.toDouble() / contentLength.toDouble()).toFloat() 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)
}
} }
Loading…
Cancel
Save