Manga metadata is now easier to use in the manga view

This commit is contained in:
Jobobby04 2020-10-25 13:37:08 -04:00
parent 2a24f659d2
commit 415f30f38a

View File

@ -61,6 +61,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import rx.Observable import rx.Observable
import rx.Single
import rx.Subscription import rx.Subscription
import rx.android.schedulers.AndroidSchedulers import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers import rx.schedulers.Schedulers
@ -138,10 +139,6 @@ class MangaPresenter(
super.onCreate(savedState) super.onCreate(savedState)
// SY --> // SY -->
if (manga.initialized && source.getMainSource() is MetadataSource<*, *>) {
getMangaMetaObservable().subscribeLatestCache({ view, flatMetadata -> if (flatMetadata != null) view.onNextMetaInfo(flatMetadata) else XLog.d("Invalid metadata") })
}
if (source is MergedSource) { if (source is MergedSource) {
launchIO { mergedManga = db.getMergedMangas(manga.id!!).await() } launchIO { mergedManga = db.getMergedMangas(manga.id!!).await() }
} }
@ -155,7 +152,21 @@ class MangaPresenter(
getMangaObservable() getMangaObservable()
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribeLatestCache({ view, manga -> view.onNextMangaInfo(manga, source) }) // SY -->
.flatMap { manga ->
if (manga.initialized && source.getMainSource() is MetadataSource<*, *>) {
getMangaMetaSingle().map {
manga to it
}.toObservable()
} else {
Observable.just(manga to null)
}
}
.subscribeLatestCache({ view, (manga, flatMetadata) ->
if (flatMetadata != null) view.onNextMetaInfo(flatMetadata) else XLog.d("Invalid metadata")
// SY <--
view.onNextMangaInfo(manga, source)
})
getTrackingObservable() getTrackingObservable()
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -244,12 +255,11 @@ class MangaPresenter(
} }
// SY --> // SY -->
private fun getMangaMetaObservable(): Observable<FlatMetadata?> { private fun getMangaMetaSingle(): Single<FlatMetadata?> {
val mangaId = manga.id val mangaId = manga.id
return if (mangaId != null) { return if (mangaId != null) {
db.getFlatMetadataForManga(mangaId).asRxObservable() db.getFlatMetadataForManga(mangaId).asRxSingle()
.observeOn(AndroidSchedulers.mainThread()) } else Single.just(null)
} else Observable.just(null)
} }
// SY <-- // SY <--
@ -266,13 +276,6 @@ class MangaPresenter(
db.insertManga(manga).executeAsBlocking() db.insertManga(manga).executeAsBlocking()
manga manga
} }
// SY -->
.doOnNext {
if (source.getMainSource() is MetadataSource<*, *>) {
getMangaMetaObservable().subscribeLatestCache({ view, flatMetadata -> if (flatMetadata != null) view.onNextMetaInfo(flatMetadata) else XLog.d("Invalid metadata") })
}
}
// SY <--
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribeFirst( .subscribeFirst(