From 9e2b60e15e4333e9388b1a395a91346d43e87491 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 9 Jan 2025 08:26:43 +0200 Subject: [PATCH] Fix pages cache usage --- .../kotatsu/reader/domain/PageLoader.kt | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/domain/PageLoader.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/domain/PageLoader.kt index 311a732b2..f891652f4 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/domain/PageLoader.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/domain/PageLoader.kt @@ -184,11 +184,8 @@ class PageLoader @Inject constructor( prefetchLock.withLock { while (prefetchQueue.isNotEmpty()) { val page = prefetchQueue.pollFirst() ?: return@launch - if (cache.get(page.url) == null) { // FIXME use pageUrl - synchronized(tasks) { - tasks[page.id] = loadPageAsyncImpl(page, skipCache = false, isPrefetch = true) - } - return@launch + synchronized(tasks) { + tasks[page.id] = loadPageAsyncImpl(page, skipCache = false, isPrefetch = true) } } } @@ -201,13 +198,14 @@ class PageLoader @Inject constructor( ): ProgressDeferred { val progress = MutableStateFlow(PROGRESS_UNDEFINED) val deferred = loaderScope.async { - if (!skipCache) { - // FIXME use pageUrl - cache.get(page.url)?.let { return@async it.toUri() } - } counter.incrementAndGet() try { - loadPageImpl(page, progress, isPrefetch) + loadPageImpl( + page = page, + progress = progress, + isPrefetch = isPrefetch, + skipCache = skipCache, + ) } finally { if (counter.decrementAndGet() == 0) { onIdle() @@ -231,9 +229,13 @@ class PageLoader @Inject constructor( page: MangaPage, progress: MutableStateFlow, isPrefetch: Boolean, + skipCache: Boolean, ): Uri = semaphore.withPermit { val pageUrl = getPageUrl(page) check(pageUrl.isNotBlank()) { "Cannot obtain full image url for $page" } + if (!skipCache) { + cache.get(pageUrl)?.let { return it.toUri() } + } val uri = Uri.parse(pageUrl) return when { uri.isZipUri() -> if (uri.scheme == URI_SCHEME_ZIP) {