Build fixes after cherry picking
This commit is contained in:
parent
85207b1d2d
commit
42da9abe3e
@ -1,7 +1,7 @@
|
|||||||
package eu.kanade.tachiyomi.data.database.queries
|
package eu.kanade.tachiyomi.data.database.queries
|
||||||
|
|
||||||
import exh.source.MERGED_SOURCE_ID
|
|
||||||
import eu.kanade.tachiyomi.data.database.resolvers.SourceIdMangaCountGetResolver
|
import eu.kanade.tachiyomi.data.database.resolvers.SourceIdMangaCountGetResolver
|
||||||
|
import exh.source.MERGED_SOURCE_ID
|
||||||
import eu.kanade.tachiyomi.data.database.tables.CategoryTable as Category
|
import eu.kanade.tachiyomi.data.database.tables.CategoryTable as Category
|
||||||
import eu.kanade.tachiyomi.data.database.tables.ChapterTable as Chapter
|
import eu.kanade.tachiyomi.data.database.tables.ChapterTable as Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.tables.HistoryTable as History
|
import eu.kanade.tachiyomi.data.database.tables.HistoryTable as History
|
||||||
|
@ -131,11 +131,11 @@ class MdList(private val context: Context, id: Int) : TrackService(id) {
|
|||||||
val mdex = mdex ?: throw MangaDexNotFoundException()
|
val mdex = mdex ?: throw MangaDexNotFoundException()
|
||||||
mdex.fetchSearchManga(0, query, mdex.getFilterList())
|
mdex.fetchSearchManga(0, query, mdex.getFilterList())
|
||||||
.flatMap { page ->
|
.flatMap { page ->
|
||||||
runAsObservable({
|
runAsObservable {
|
||||||
page.mangas.map {
|
page.mangas.map {
|
||||||
toTrackSearch(mdex.getMangaDetails(it.toMangaInfo()))
|
toTrackSearch(mdex.getMangaDetails(it.toMangaInfo()))
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
.awaitSingle()
|
.awaitSingle()
|
||||||
}
|
}
|
||||||
|
@ -28,16 +28,16 @@ internal class ExtensionGithubApi {
|
|||||||
.await()
|
.await()
|
||||||
.parseAs<List<ExtensionJsonObject>>()
|
.parseAs<List<ExtensionJsonObject>>()
|
||||||
.toExtensions() /* SY --> */ + preferences.extensionRepos()
|
.toExtensions() /* SY --> */ + preferences.extensionRepos()
|
||||||
.get()
|
.get()
|
||||||
.flatMap { repoPath ->
|
.flatMap { repoPath ->
|
||||||
val url = "$BASE_URL$repoPath/repo/"
|
val url = "$BASE_URL$repoPath/repo/"
|
||||||
networkService.client
|
networkService.client
|
||||||
.newCall(GET("${url}index.min.json"))
|
.newCall(GET("${url}index.min.json"))
|
||||||
.await()
|
.await()
|
||||||
.parseAs<List<ExtensionJsonObject>>()
|
.parseAs<List<ExtensionJsonObject>>()
|
||||||
.toExtensions(url)
|
.toExtensions(url)
|
||||||
}
|
}
|
||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
// Sanity check - a small number of extensions probably means something broke
|
// Sanity check - a small number of extensions probably means something broke
|
||||||
// with the repo generator
|
// with the repo generator
|
||||||
|
@ -52,9 +52,9 @@ interface MetadataSource<M : RaisedSearchMetadata, I> : CatalogueSource {
|
|||||||
*/
|
*/
|
||||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||||
@Deprecated("Use the MangaInfo variant")
|
@Deprecated("Use the MangaInfo variant")
|
||||||
fun parseToManga(manga: SManga, input: I): Completable = runAsObservable({
|
fun parseToManga(manga: SManga, input: I): Completable = runAsObservable {
|
||||||
parseToManga(manga.toMangaInfo(), input)
|
parseToManga(manga.toMangaInfo(), input)
|
||||||
}).toCompletable()
|
}.toCompletable()
|
||||||
|
|
||||||
suspend fun parseToManga(manga: MangaInfo, input: I): MangaInfo {
|
suspend fun parseToManga(manga: MangaInfo, input: I): MangaInfo {
|
||||||
val mangaId = manga.id()
|
val mangaId = manga.id()
|
||||||
@ -82,9 +82,9 @@ interface MetadataSource<M : RaisedSearchMetadata, I> : CatalogueSource {
|
|||||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||||
@Deprecated("use fetchOrLoadMetadata made for MangaInfo")
|
@Deprecated("use fetchOrLoadMetadata made for MangaInfo")
|
||||||
fun getOrLoadMetadata(mangaId: Long?, inputProducer: () -> Single<I>): Single<M> =
|
fun getOrLoadMetadata(mangaId: Long?, inputProducer: () -> Single<I>): Single<M> =
|
||||||
runAsObservable({
|
runAsObservable {
|
||||||
fetchOrLoadMetadata(mangaId) { inputProducer().toObservable().awaitSingle() }
|
fetchOrLoadMetadata(mangaId) { inputProducer().toObservable().awaitSingle() }
|
||||||
}).toSingle()
|
}.toSingle()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to first get the metadata from the DB. If the metadata is not in the DB, calls the input
|
* Try to first get the metadata from the DB. If the metadata is not in the DB, calls the input
|
||||||
|
@ -365,9 +365,9 @@ class EHentai(
|
|||||||
|
|
||||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||||
@Deprecated("Use getChapterList instead")
|
@Deprecated("Use getChapterList instead")
|
||||||
fun fetchChapterList(manga: SManga, throttleFunc: suspend () -> Unit) = runAsObservable({
|
fun fetchChapterList(manga: SManga, throttleFunc: suspend () -> Unit) = runAsObservable {
|
||||||
getChapterList(manga.toMangaInfo(), throttleFunc).map { it.toSChapter() }
|
getChapterList(manga.toMangaInfo(), throttleFunc).map { it.toSChapter() }
|
||||||
})
|
}
|
||||||
|
|
||||||
override fun fetchPageList(chapter: SChapter) = fetchChapterPage(chapter, baseUrl + chapter.url)
|
override fun fetchPageList(chapter: SChapter) = fetchChapterPage(chapter, baseUrl + chapter.url)
|
||||||
.map {
|
.map {
|
||||||
|
@ -183,7 +183,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
|
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
|
||||||
return runAsObservable({ pageHandler.fetchPageList(chapter, isLogged(), usePort443Only(), dataSaver(), delegate) })
|
return runAsObservable { pageHandler.fetchPageList(chapter, isLogged(), usePort443Only(), dataSaver(), delegate) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun fetchImage(page: Page): Observable<Response> {
|
override fun fetchImage(page: Page): Observable<Response> {
|
||||||
|
@ -173,13 +173,13 @@ open class LatestPresenter(
|
|||||||
* @return an observable of the manga to initialize
|
* @return an observable of the manga to initialize
|
||||||
*/
|
*/
|
||||||
private fun getMangaDetailsObservable(manga: Manga, source: Source): Observable<Manga> {
|
private fun getMangaDetailsObservable(manga: Manga, source: Source): Observable<Manga> {
|
||||||
return runAsObservable({
|
return runAsObservable {
|
||||||
val networkManga = source.getMangaDetails(manga.toMangaInfo())
|
val networkManga = source.getMangaDetails(manga.toMangaInfo())
|
||||||
manga.copyFrom(networkManga.toSManga())
|
manga.copyFrom(networkManga.toSManga())
|
||||||
manga.initialized = true
|
manga.initialized = true
|
||||||
db.insertManga(manga).executeAsBlocking()
|
db.insertManga(manga).executeAsBlocking()
|
||||||
manga
|
manga
|
||||||
})
|
}
|
||||||
.onErrorResumeNext { Observable.just(manga) }
|
.onErrorResumeNext { Observable.just(manga) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ class MigrationMangaPresenter(
|
|||||||
fun migrateManga(prevManga: Manga, manga: Manga, replace: Boolean) {
|
fun migrateManga(prevManga: Manga, manga: Manga, replace: Boolean) {
|
||||||
val source = sourceManager.get(manga.source) ?: return
|
val source = sourceManager.get(manga.source) ?: return
|
||||||
|
|
||||||
Observable.defer { runAsObservable({ source.getChapterList(manga.toMangaInfo()).map { it.toSChapter() } }) }.onErrorReturn { emptyList() }
|
Observable.defer { runAsObservable { source.getChapterList(manga.toMangaInfo()).map { it.toSChapter() } } }.onErrorReturn { emptyList() }
|
||||||
.doOnNext { migrateMangaInternal(source, it, prevManga, manga, replace) }
|
.doOnNext { migrateMangaInternal(source, it, prevManga, manga, replace) }
|
||||||
.onErrorReturn { emptyList() }.subscribeOn(Schedulers.io())
|
.onErrorReturn { emptyList() }.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
@ -183,13 +183,13 @@ open class IndexPresenter(
|
|||||||
* @return an observable of the manga to initialize
|
* @return an observable of the manga to initialize
|
||||||
*/
|
*/
|
||||||
private fun getMangaDetailsObservable(manga: Manga, source: Source, isLatest: Boolean): Observable<Pair<Manga, Boolean>> {
|
private fun getMangaDetailsObservable(manga: Manga, source: Source, isLatest: Boolean): Observable<Pair<Manga, Boolean>> {
|
||||||
return runAsObservable({
|
return runAsObservable {
|
||||||
val networkManga = source.getMangaDetails(manga.toMangaInfo())
|
val networkManga = source.getMangaDetails(manga.toMangaInfo())
|
||||||
manga.copyFrom(networkManga.toSManga())
|
manga.copyFrom(networkManga.toSManga())
|
||||||
manga.initialized = true
|
manga.initialized = true
|
||||||
db.insertManga(manga).executeAsBlocking()
|
db.insertManga(manga).executeAsBlocking()
|
||||||
manga to isLatest
|
manga to isLatest
|
||||||
})
|
}
|
||||||
.onErrorResumeNext { Observable.just(manga to isLatest) }
|
.onErrorResumeNext { Observable.just(manga to isLatest) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package eu.kanade.tachiyomi.ui.setting
|
package eu.kanade.tachiyomi.ui.setting
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Dialog
|
||||||
import android.content.ActivityNotFoundException
|
import android.content.ActivityNotFoundException
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.os.Bundle
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
@ -154,7 +154,7 @@ class ClearDatabaseController :
|
|||||||
)
|
)
|
||||||
val selected = booleanArrayOf(true, true)
|
val selected = booleanArrayOf(true, true)
|
||||||
return MaterialAlertDialogBuilder(activity!!)
|
return MaterialAlertDialogBuilder(activity!!)
|
||||||
//.setMessage(R.string.clear_database_confirmation)
|
// .setMessage(R.string.clear_database_confirmation)
|
||||||
// SY -->
|
// SY -->
|
||||||
.setMultiChoiceItems(item, selected) { _, which, checked ->
|
.setMultiChoiceItems(item, selected) { _, which, checked ->
|
||||||
if (which == 0) {
|
if (which == 0) {
|
||||||
@ -173,7 +173,7 @@ class ClearDatabaseController :
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun clearDatabaseForSelectedSources(/* SY --> */ keepReadManga: Boolean/* SY <-- */ ) {
|
private fun clearDatabaseForSelectedSources(/* SY --> */ keepReadManga: Boolean/* SY <-- */) {
|
||||||
val adapter = adapter ?: return
|
val adapter = adapter ?: return
|
||||||
val selectedSourceIds = adapter.selectedPositions.mapNotNull { position ->
|
val selectedSourceIds = adapter.selectedPositions.mapNotNull { position ->
|
||||||
adapter.getItem(position)?.source?.id
|
adapter.getItem(position)?.source?.id
|
||||||
|
@ -3,7 +3,7 @@ package exh.md.handlers
|
|||||||
import eu.kanade.tachiyomi.network.POST
|
import eu.kanade.tachiyomi.network.POST
|
||||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
import eu.kanade.tachiyomi.network.await
|
import eu.kanade.tachiyomi.network.await
|
||||||
import eu.kanade.tachiyomi.network.interceptor.RateLimitInterceptor
|
import eu.kanade.tachiyomi.network.interceptor.rateLimit
|
||||||
import eu.kanade.tachiyomi.network.parseAs
|
import eu.kanade.tachiyomi.network.parseAs
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
@ -32,7 +32,7 @@ class BilibiliHandler(currentClient: OkHttpClient) {
|
|||||||
.build()
|
.build()
|
||||||
|
|
||||||
val client: OkHttpClient = currentClient.newBuilder()
|
val client: OkHttpClient = currentClient.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.rateLimit(1, 1, TimeUnit.SECONDS)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
suspend fun fetchPageList(externalUrl: String, chapterNumber: String): List<Page> {
|
suspend fun fetchPageList(externalUrl: String, chapterNumber: String): List<Page> {
|
||||||
|
@ -33,14 +33,14 @@ class MangaHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun fetchMangaDetailsObservable(manga: SManga, sourceId: Long, forceLatestCovers: Boolean): Observable<SManga> {
|
fun fetchMangaDetailsObservable(manga: SManga, sourceId: Long, forceLatestCovers: Boolean): Observable<SManga> {
|
||||||
return runAsObservable({
|
return runAsObservable {
|
||||||
getMangaDetails(manga.toMangaInfo(), sourceId, forceLatestCovers).toSManga()
|
getMangaDetails(manga.toMangaInfo(), sourceId, forceLatestCovers).toSManga()
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fetchChapterListObservable(manga: SManga): Observable<List<SChapter>> = runAsObservable({
|
fun fetchChapterListObservable(manga: SManga): Observable<List<SChapter>> = runAsObservable {
|
||||||
getChapterList(manga.toMangaInfo()).map { it.toSChapter() }
|
getChapterList(manga.toMangaInfo()).map { it.toSChapter() }
|
||||||
})
|
}
|
||||||
|
|
||||||
suspend fun getChapterList(manga: MangaInfo): List<ChapterInfo> {
|
suspend fun getChapterList(manga: MangaInfo): List<ChapterInfo> {
|
||||||
return withIOContext {
|
return withIOContext {
|
||||||
|
@ -18,9 +18,9 @@ private val galleryAdder by lazy {
|
|||||||
fun UrlImportableSource.urlImportFetchSearchManga(context: Context, query: String, fail: () -> Observable<MangasPage>): Observable<MangasPage> =
|
fun UrlImportableSource.urlImportFetchSearchManga(context: Context, query: String, fail: () -> Observable<MangasPage>): Observable<MangasPage> =
|
||||||
when {
|
when {
|
||||||
query.startsWith("http://") || query.startsWith("https://") -> {
|
query.startsWith("http://") || query.startsWith("https://") -> {
|
||||||
runAsObservable({
|
runAsObservable {
|
||||||
galleryAdder.addGallery(context, query, false, this@urlImportFetchSearchManga)
|
galleryAdder.addGallery(context, query, false, this@urlImportFetchSearchManga)
|
||||||
})
|
}
|
||||||
.map { res ->
|
.map { res ->
|
||||||
MangasPage(
|
MangasPage(
|
||||||
if (res is GalleryAddEvent.Success) {
|
if (res is GalleryAddEvent.Success) {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<eu.kanade.tachiyomi.widget.ElevationAppBarLayout
|
<com.google.android.material.appbar.TachiyomiAppBarLayout
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/appbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -21,7 +21,7 @@
|
|||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_height="?attr/actionBarSize"
|
||||||
android:theme="?attr/actionBarTheme"/>
|
android:theme="?attr/actionBarTheme"/>
|
||||||
|
|
||||||
</eu.kanade.tachiyomi.widget.ElevationAppBarLayout>
|
</com.google.android.material.appbar.TachiyomiAppBarLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user