mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-15 05:27:28 +01:00
More SQLDelight migrations
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.migration.manga
|
||||
|
||||
import android.os.Bundle
|
||||
import eu.kanade.domain.manga.interactor.GetFavoritesBySourceId
|
||||
import eu.kanade.domain.manga.interactor.GetFavorites
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
|
||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||
@@ -16,7 +16,7 @@ import uy.kohesive.injekt.api.get
|
||||
|
||||
class MigrationMangaPresenter(
|
||||
private val sourceId: Long,
|
||||
private val getFavoritesBySourceId: GetFavoritesBySourceId = Injekt.get(),
|
||||
private val getFavorites: GetFavorites = Injekt.get(),
|
||||
) : BasePresenter<MigrationMangaController>() {
|
||||
|
||||
private val _state: MutableStateFlow<MigrateMangaState> = MutableStateFlow(MigrateMangaState.Loading)
|
||||
@@ -25,7 +25,7 @@ class MigrationMangaPresenter(
|
||||
override fun onCreate(savedState: Bundle?) {
|
||||
super.onCreate(savedState)
|
||||
presenterScope.launchIO {
|
||||
getFavoritesBySourceId
|
||||
getFavorites
|
||||
.subscribe(sourceId)
|
||||
.catch { exception ->
|
||||
_state.value = MigrateMangaState.Error(exception)
|
||||
|
||||
@@ -46,7 +46,6 @@ import com.google.android.material.transition.platform.MaterialContainerTransfor
|
||||
import dev.chrisbanes.insetter.applyInsetter
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
@@ -106,10 +105,6 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||
}
|
||||
}
|
||||
|
||||
fun newIntent(context: Context, manga: Manga, chapter: Chapter): Intent {
|
||||
return newIntent(context, manga.id, chapter.id)
|
||||
}
|
||||
|
||||
private const val ENABLED_BUTTON_IMAGE_ALPHA = 255
|
||||
private const val DISABLED_BUTTON_IMAGE_ALPHA = 64
|
||||
|
||||
|
||||
@@ -5,11 +5,15 @@ import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import com.jakewharton.rxrelay.BehaviorRelay
|
||||
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
|
||||
import eu.kanade.domain.chapter.interactor.UpdateChapter
|
||||
import eu.kanade.domain.chapter.model.ChapterUpdate
|
||||
import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.domain.history.interactor.UpsertHistory
|
||||
import eu.kanade.domain.history.model.HistoryUpdate
|
||||
import eu.kanade.domain.manga.interactor.GetMangaById
|
||||
import eu.kanade.domain.manga.model.isLocal
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.domain.track.interactor.GetTracks
|
||||
import eu.kanade.domain.track.interactor.InsertTrack
|
||||
import eu.kanade.domain.track.model.toDbTrack
|
||||
@@ -41,6 +45,7 @@ import eu.kanade.tachiyomi.util.lang.byteSize
|
||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||
import eu.kanade.tachiyomi.util.lang.launchUI
|
||||
import eu.kanade.tachiyomi.util.lang.takeBytes
|
||||
import eu.kanade.tachiyomi.util.lang.withUIContext
|
||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
||||
import eu.kanade.tachiyomi.util.storage.cacheImageDir
|
||||
import eu.kanade.tachiyomi.util.system.isOnline
|
||||
@@ -68,6 +73,8 @@ class ReaderPresenter(
|
||||
private val downloadManager: DownloadManager = Injekt.get(),
|
||||
private val preferences: PreferencesHelper = Injekt.get(),
|
||||
private val delayedTrackingStore: DelayedTrackingStore = Injekt.get(),
|
||||
private val getMangaById: GetMangaById = Injekt.get(),
|
||||
private val getChapterByMangaId: GetChapterByMangaId = Injekt.get(),
|
||||
private val getTracks: GetTracks = Injekt.get(),
|
||||
private val insertTrack: InsertTrack = Injekt.get(),
|
||||
private val upsertHistory: UpsertHistory = Injekt.get(),
|
||||
@@ -118,14 +125,14 @@ class ReaderPresenter(
|
||||
*/
|
||||
private val chapterList by lazy {
|
||||
val manga = manga!!
|
||||
val dbChapters = db.getChapters(manga.id!!).executeAsBlocking()
|
||||
val chapters = runBlocking { getChapterByMangaId.await(manga.id!!) }
|
||||
|
||||
val selectedChapter = dbChapters.find { it.id == chapterId }
|
||||
val selectedChapter = chapters.find { it.id == chapterId }
|
||||
?: error("Requested chapter of id $chapterId not found in chapter list")
|
||||
|
||||
val chaptersForReader = when {
|
||||
(preferences.skipRead() || preferences.skipFiltered()) -> {
|
||||
val filteredChapters = dbChapters.filterNot {
|
||||
val filteredChapters = chapters.filterNot {
|
||||
when {
|
||||
preferences.skipRead() && it.read -> true
|
||||
preferences.skipFiltered() -> {
|
||||
@@ -146,10 +153,11 @@ class ReaderPresenter(
|
||||
filteredChapters + listOf(selectedChapter)
|
||||
}
|
||||
}
|
||||
else -> dbChapters
|
||||
else -> chapters
|
||||
}
|
||||
|
||||
chaptersForReader
|
||||
.map { it.toDbChapter() }
|
||||
.sortedWith(getChapterSort(manga, sortDescending = false))
|
||||
.map(::ReaderChapter)
|
||||
}
|
||||
@@ -232,16 +240,16 @@ class ReaderPresenter(
|
||||
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,
|
||||
)
|
||||
launchIO {
|
||||
try {
|
||||
val manga = getMangaById.await(mangaId)
|
||||
withUIContext {
|
||||
manga?.let { init(it.toDbManga(), initialChapterId) }
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
view?.setInitialChapterError(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user