Minor fixes when updating the manga viewer

This commit is contained in:
inorichi
2018-10-09 14:27:00 +02:00
parent 790e0908a3
commit 788cb843fc
4 changed files with 61 additions and 11 deletions

View File

@@ -99,7 +99,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
fun newIntent(context: Context, manga: Manga, chapter: Chapter): Intent {
val intent = Intent(context, ReaderActivity::class.java)
intent.putExtra("manga", manga)
intent.putExtra("manga", manga.id)
intent.putExtra("chapter", chapter.id)
return intent
}
@@ -117,10 +117,10 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
setContentView(R.layout.reader_activity)
if (presenter.needsInit()) {
val manga = intent.extras.getSerializable("manga") as? Manga
val manga = intent.extras.getLong("manga", -1)
val chapter = intent.extras.getLong("chapter", -1)
if (manga == null || chapter == -1L) {
if (manga == -1L || chapter == -1L) {
finish()
return
}

View File

@@ -157,11 +157,27 @@ class ReaderPresenter(
return manga == null
}
/**
* Initializes this presenter with the given [mangaId] and [initialChapterId]. This method will
* fetch the manga from the database and initialize the initial chapter.
*/
fun init(mangaId: Long, initialChapterId: Long) {
if (!needsInit()) return
db.getManga(mangaId).asRxObservable()
.first()
.observeOn(AndroidSchedulers.mainThread())
.doOnNext { init(it, initialChapterId) }
.subscribeFirst({ _, _ ->
// Ignore onNext event
}, ReaderActivity::setInitialChapterError)
}
/**
* Initializes this presenter with the given [manga] and [initialChapterId]. This method will
* set the chapter loader, view subscriptions and trigger an initial load.
*/
fun init(manga: Manga, initialChapterId: Long) {
private fun init(manga: Manga, initialChapterId: Long) {
if (!needsInit()) return
this.manga = manga
@@ -180,6 +196,7 @@ class ReaderPresenter(
.fromCallable { chapterList.first { chapterId == it.chapter.id } }
.flatMap { getLoadObservable(loader!!, it) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst({ _, _ ->
// Ignore onNext event
}, ReaderActivity::setInitialChapterError)
@@ -374,8 +391,7 @@ class ReaderPresenter(
fun setMangaViewer(viewer: Int) {
val manga = manga ?: return
manga.viewer = viewer
// TODO custom put operation
db.insertManga(manga).executeAsBlocking()
db.updateMangaViewer(manga).executeAsBlocking()
Observable.timer(250, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.subscribeFirst({ view, _ ->