Improve data saver handling

This commit is contained in:
Jobobby04 2021-12-12 12:16:07 -05:00
parent df0083e2e3
commit 6e8ee38238
3 changed files with 18 additions and 15 deletions

View File

@ -29,6 +29,7 @@ import eu.kanade.tachiyomi.util.system.ImageUtil
import eu.kanade.tachiyomi.util.system.logcat
import eu.kanade.tachiyomi.util.system.toast
import exh.util.DataSaver
import exh.util.DataSaver.Companion.fetchImage
import kotlinx.coroutines.async
import logcat.LogPriority
import okhttp3.Response
@ -412,13 +413,8 @@ class Downloader(
private fun downloadImage(page: Page, source: HttpSource, tmpDir: UniFile, filename: String, dataSaver: DataSaver): Observable<UniFile> {
page.status = Page.DOWNLOAD_IMAGE
page.progress = 0
val imageUrl = page.imageUrl!!
page.imageUrl = dataSaver.compress(imageUrl)
return source.fetchImage(page)
return source.fetchImage(page, dataSaver)
.map { response ->
// SY -->
page.imageUrl = imageUrl
// SY <--
val file = tmpDir.createFile("$filename.tmp")
try {
response.body!!.source().saveTo(file.openOutputStream())

View File

@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.util.lang.plusAssign
import eu.kanade.tachiyomi.util.system.logcat
import exh.source.isEhBasedSource
import exh.util.DataSaver
import exh.util.DataSaver.Companion.fetchImage
import logcat.LogPriority
import rx.Completable
import rx.Observable
@ -275,15 +276,8 @@ class HttpPageLoader(
*/
private fun HttpSource.cacheImage(page: ReaderPage): Observable<ReaderPage> {
page.status = Page.DOWNLOAD_IMAGE
// SY -->
val imageUrl = page.imageUrl!!
page.imageUrl = dataSaver.compress(imageUrl)
// SY <--
return fetchImage(page)
return fetchImage(page, dataSaver)
.doOnNext {
// SY -->
page.imageUrl = imageUrl
// SY <--
chapterCache.putImageToCache(page.imageUrl!!, it)
}
.map { page }

View File

@ -2,7 +2,11 @@ package exh.util
import com.tfcporciuncula.flow.Preference
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import tachiyomi.source.Source
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.online.HttpSource
import okhttp3.Response
import rx.Observable
interface DataSaver {
@ -14,6 +18,15 @@ interface DataSaver {
return imageUrl
}
}
fun HttpSource.fetchImage(page: Page, dataSaver: DataSaver): Observable<Response> {
val imageUrl = page.imageUrl ?: return fetchImage(page)
page.imageUrl = dataSaver.compress(imageUrl)
return fetchImage(page)
.doOnNext {
page.imageUrl = imageUrl
}
}
}
}