diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt index a352f74ef..955465d19 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt @@ -5,12 +5,15 @@ import android.net.Uri import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager +import eu.kanade.tachiyomi.source.model.toSChapter import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource +import eu.kanade.tachiyomi.util.lang.runAsObservable import exh.eh.EHentaiThrottleManager import rx.Observable import uy.kohesive.injekt.injectLazy @@ -41,13 +44,15 @@ abstract class AbstractBackupManager(protected val context: Context) { * @return [Observable] that contains manga */ internal open fun restoreChapterFetchObservable(source: Source, manga: Manga, chapters: List, throttleManager: EHentaiThrottleManager): Observable, List>> { - return ( + return runAsObservable({ if (source is EHentai) { - source.fetchChapterList(manga, throttleManager::throttle) + source.getChapterList(manga.toMangaInfo(), throttleManager::throttle) + .map { it.toSChapter() } } else { - source.fetchChapterList(manga) + source.getChapterList(manga.toMangaInfo()) + .map { it.toSChapter() } } - ).map { + }).map { syncChaptersWithSource(databaseHelper, it, manga, source) } .doOnNext { (first) -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt index 2bd66b49f..e276f379c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt @@ -246,6 +246,7 @@ class FullBackupManager(context: Context) : AbstractBackupManager(context) { */ fun restoreMangaFetchObservable(source: Source?, manga: Manga, online: Boolean): Observable { return if (online && source != null /* SY --> */ && source !is MergedSource /* SY <-- */) { + runAsObservable({ val networkManga = source.getMangaDetails(manga.toMangaInfo()) manga.copyFrom(networkManga.toSManga()) manga.favorite = manga.favorite diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index ed85e9d19..8a2869366 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -25,6 +25,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.model.toSChapter import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.source.online.all.MangaDex import eu.kanade.tachiyomi.source.online.all.MergedSource @@ -456,7 +457,10 @@ class LibraryUpdateService( return ( /* SY --> */ if (source is MergedSource) runAsObservable({ source.fetchChaptersAndSync(manga, false) }) - else /* SY <-- */ source.fetchChapterList(manga) + else /* SY <-- */ runAsObservable({ + source.getChapterList(manga.toMangaInfo()) + .map { it.toSChapter() } + }) .map { syncChaptersWithSource(db, it, manga, source) } // SY --> ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt index 9603c5c86..6c7a98a3c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt @@ -22,6 +22,7 @@ import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager +import eu.kanade.tachiyomi.source.model.toSChapter import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.source.online.MetadataSource import eu.kanade.tachiyomi.source.online.all.MangaDex @@ -286,15 +287,17 @@ class MangaPresenter( */ fun fetchMangaFromSource(manualFetch: Boolean = false) { if (!fetchMangaSubscription.isNullOrUnsubscribed()) return - fetchMangaSubscription = runAsObservable({ - val networkManga = source.getMangaDetails(manga.toMangaInfo()) - val sManga = networkManga.toSManga() - manga.prepUpdateCover(coverCache, sManga, manualFetch) - manga.copyFrom(sManga) - manga.initialized = true - db.insertManga(manga).executeAsBlocking() - manga - }) + fetchMangaSubscription = Observable.defer { + runAsObservable({ + val networkManga = source.getMangaDetails(manga.toMangaInfo()) + val sManga = networkManga.toSManga() + manga.prepUpdateCover(coverCache, sManga, manualFetch) + manga.copyFrom(sManga) + manga.initialized = true + db.insertManga(manga).executeAsBlocking() + manga + }) + } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeFirst( @@ -761,7 +764,12 @@ class MangaPresenter( if (!fetchChaptersSubscription.isNullOrUnsubscribed()) return fetchChaptersSubscription = /* SY --> */ if (source !is MergedSource) { // SY <-- - Observable.defer { source.fetchChapterList(manga) } + Observable.defer { + runAsObservable({ + source.getChapterList(manga.toMangaInfo()) + .map { it.toSChapter() } + }) + } .subscribeOn(Schedulers.io()) .map { syncChaptersWithSource(db, it, manga, source) } .doOnNext {