* Split the reset of the preferences in PreferencesHelper * Capitalize ThemeMode (cherry picked from commit 29fa93e829ca7f9c3a28c58f3de146bc2bd15aad) # Conflicts: # app/build.gradle.kts # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/App.kt # app/src/main/java/eu/kanade/tachiyomi/AppModule.kt # app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt # app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt # app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt # app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt # app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
44 lines
1.4 KiB
Kotlin
44 lines
1.4 KiB
Kotlin
package exh.patch
|
|
|
|
import eu.kanade.domain.UnsortedPreferences
|
|
import okhttp3.OkHttpClient
|
|
import okhttp3.Request
|
|
import okhttp3.Response
|
|
import uy.kohesive.injekt.Injekt
|
|
import uy.kohesive.injekt.api.get
|
|
|
|
typealias EHInterceptor = (request: Request, response: Response, sourceId: Long) -> Response
|
|
|
|
fun OkHttpClient.Builder.injectPatches(sourceIdProducer: () -> Long): OkHttpClient.Builder {
|
|
return addInterceptor { chain ->
|
|
val req = chain.request()
|
|
val response = chain.proceed(req)
|
|
val sourceId = sourceIdProducer()
|
|
findAndApplyPatches(sourceId)(req, response, sourceId)
|
|
}
|
|
}
|
|
|
|
fun findAndApplyPatches(sourceId: Long): EHInterceptor {
|
|
// TODO make it so captcha doesnt auto open in manga eden while applying universal interceptors
|
|
return if (Injekt.get<UnsortedPreferences>().autoSolveCaptcha().get()) {
|
|
(EH_INTERCEPTORS[sourceId].orEmpty() + EH_INTERCEPTORS[EH_UNIVERSAL_INTERCEPTOR].orEmpty()).merge()
|
|
} else {
|
|
EH_INTERCEPTORS[sourceId].orEmpty().merge()
|
|
}
|
|
}
|
|
|
|
fun List<EHInterceptor>.merge(): EHInterceptor {
|
|
return { request, response, sourceId ->
|
|
fold(response) { acc, int ->
|
|
int(request, acc, sourceId)
|
|
}
|
|
}
|
|
}
|
|
|
|
private const val EH_UNIVERSAL_INTERCEPTOR = -1L
|
|
private val EH_INTERCEPTORS: Map<Long, List<EHInterceptor>> = mapOf(
|
|
EH_UNIVERSAL_INTERCEPTOR to listOf(
|
|
CAPTCHA_DETECTION_PATCH, // Auto captcha detection
|
|
),
|
|
)
|