Data saver: Long click a source to exclude, also downloader can be excluded.

Small rewrite of Data saver
This commit is contained in:
Jobobby04
2021-12-04 12:37:47 -05:00
parent 54c67bf22c
commit c5b2aa180e
12 changed files with 115 additions and 38 deletions
+36 -14
View File
@@ -2,29 +2,51 @@ package exh.util
import com.tfcporciuncula.flow.Preference
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import uy.kohesive.injekt.injectLazy
import tachiyomi.source.Source
object DataSaver {
private val preferences: PreferencesHelper by injectLazy()
interface DataSaver {
fun compress(imageUrl: String): String {
return if (preferences.dataSaver().get() && preferences.dataSaverServer().get().isNotBlank() && !imageUrl.contains(preferences.dataSaverServer().get() + "/?")) {
fun compress(imageUrl: String): String
companion object {
val NoOp = object : DataSaver {
override fun compress(imageUrl: String): String {
return imageUrl
}
}
}
}
fun DataSaver(source: Source, preferences: PreferencesHelper): DataSaver {
return if (preferences.dataSaver().get() && source.id.toString() !in preferences.dataSaverExcludedSources().get()) {
return DataSaverImpl(preferences)
} else {
DataSaver.NoOp
}
}
private class DataSaverImpl(preferences: PreferencesHelper): DataSaver {
private val dataSavedServer = preferences.dataSaverServer().get().trimEnd('/')
private val ignoreJpg = preferences.ignoreJpeg().get()
private val ignoreGif = preferences.ignoreGif().get()
private val format = preferences.dataSaverImageFormatJpeg().toIntRepresentation()
private val quality = preferences.dataSaverImageQuality().get()
private val colorBW = preferences.dataSaverColorBW().toIntRepresentation()
override fun compress(imageUrl: String): String {
return if (dataSavedServer.isNotBlank() && !imageUrl.contains(dataSavedServer)) {
when {
imageUrl.contains(".jpeg", true) || imageUrl.contains(".jpg", true) -> if (preferences.ignoreJpeg().get()) imageUrl else getUrl(imageUrl)
imageUrl.contains(".gif", true) -> if (preferences.ignoreGif().get()) imageUrl else getUrl(imageUrl)
imageUrl.contains(".jpeg", true) || imageUrl.contains(".jpg", true) -> if (ignoreJpg) imageUrl else getUrl(imageUrl)
imageUrl.contains(".gif", true) -> if (ignoreGif) imageUrl else getUrl(imageUrl)
else -> getUrl(imageUrl)
}
} else imageUrl
}
private fun getUrl(imageUrl: String): String {
val server = preferences.dataSaverServer().get() + "/?"
val format = "jpg=" + preferences.dataSaverImageFormatJpeg().toIntRepresentation()
val quality = "l=" + preferences.dataSaverImageQuality().get()
val colorBW = "bw=" + preferences.dataSaverColorBW().toIntRepresentation()
val url = "url=$imageUrl"
return "$server&$format&$quality&$colorBW&$url"
return "$dataSavedServer/?jpg=$format&l=$quality&bw=$colorBW&url=$imageUrl"
}
private fun Preference<Boolean>.toIntRepresentation() = if (get()) "1" else "0"