More domain model usage
(cherry picked from commit 3791d8254034ffcab94ddd65ec290c28384e6526) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardItem.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
This commit is contained in:
parent
d48427152e
commit
f1a31e4560
@ -1,5 +1,6 @@
|
|||||||
package eu.kanade.domain.chapter.model
|
package eu.kanade.domain.chapter.model
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.ChapterImpl
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter as DbChapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter as DbChapter
|
||||||
|
|
||||||
@ -61,7 +62,7 @@ data class Chapter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Remove when all deps are migrated
|
// TODO: Remove when all deps are migrated
|
||||||
fun Chapter.toDbChapter(): DbChapter = DbChapter.create().also {
|
fun Chapter.toDbChapter(): DbChapter = ChapterImpl().also {
|
||||||
it.id = id
|
it.id = id
|
||||||
it.manga_id = mangaId
|
it.manga_id = mangaId
|
||||||
it.url = url
|
it.url = url
|
||||||
|
@ -20,11 +20,7 @@ interface Chapter : SChapter, Serializable {
|
|||||||
|
|
||||||
var source_order: Int
|
var source_order: Int
|
||||||
|
|
||||||
val isRecognizedNumber: Boolean
|
|
||||||
get() = chapter_number >= 0f
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun create(): Chapter = ChapterImpl().apply {
|
fun create(): Chapter = ChapterImpl().apply {
|
||||||
chapter_number = -1f
|
chapter_number = -1f
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,10 @@ import dev.chrisbanes.insetter.applyInsetter
|
|||||||
import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
|
import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
|
||||||
import eu.kanade.domain.manga.interactor.GetManga
|
import eu.kanade.domain.manga.interactor.GetManga
|
||||||
import eu.kanade.domain.manga.interactor.UpdateManga
|
import eu.kanade.domain.manga.interactor.UpdateManga
|
||||||
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.domain.manga.model.toDbManga
|
import eu.kanade.domain.manga.model.toDbManga
|
||||||
import eu.kanade.domain.manga.model.toMangaInfo
|
import eu.kanade.domain.manga.model.toMangaInfo
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.databinding.MigrationListControllerBinding
|
import eu.kanade.tachiyomi.databinding.MigrationListControllerBinding
|
||||||
@ -333,7 +333,7 @@ class MigrationListController(bundle: Bundle? = null) :
|
|||||||
} else {
|
} else {
|
||||||
sources.filter { it.id != manga.source }
|
sources.filter { it.id != manga.source }
|
||||||
}
|
}
|
||||||
val searchController = SearchController(manga.toDbManga(), validSources)
|
val searchController = SearchController(manga, validSources)
|
||||||
searchController.targetController = this@MigrationListController
|
searchController.targetController = this@MigrationListController
|
||||||
router.pushController(searchController)
|
router.pushController(searchController)
|
||||||
}
|
}
|
||||||
@ -357,7 +357,7 @@ class MigrationListController(bundle: Bundle? = null) :
|
|||||||
adapter?.notifyItemChanged(firstIndex)
|
adapter?.notifyItemChanged(firstIndex)
|
||||||
launchUI {
|
launchUI {
|
||||||
val result = CoroutineScope(migratingManga.manga.migrationJob).async {
|
val result = CoroutineScope(migratingManga.manga.migrationJob).async {
|
||||||
val localManga = smartSearchEngine.networkToLocalManga(manga, source.id).toDomainManga()!!
|
val localManga = smartSearchEngine.networkToLocalManga(manga.toDbManga(), source.id).toDomainManga()!!
|
||||||
try {
|
try {
|
||||||
val chapters = source.getChapterList(localManga.toMangaInfo())
|
val chapters = source.getChapterList(localManga.toMangaInfo())
|
||||||
.map { it.toSChapter() }
|
.map { it.toSChapter() }
|
||||||
|
@ -6,9 +6,8 @@ import android.view.MenuInflater
|
|||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import eu.kanade.domain.manga.interactor.GetManga
|
import eu.kanade.domain.manga.interactor.GetManga
|
||||||
import eu.kanade.domain.manga.model.toDbManga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
||||||
@ -28,7 +27,7 @@ class SearchController(
|
|||||||
private var manga: Manga? = null,
|
private var manga: Manga? = null,
|
||||||
private var sources: List<CatalogueSource>? = null,
|
private var sources: List<CatalogueSource>? = null,
|
||||||
) : GlobalSearchController(
|
) : GlobalSearchController(
|
||||||
manga?.originalTitle,
|
manga?.ogTitle,
|
||||||
bundle = bundleOf(
|
bundle = bundleOf(
|
||||||
OLD_MANGA to manga?.id,
|
OLD_MANGA to manga?.id,
|
||||||
SOURCES to sources?.map { it.id }?.toLongArray(),
|
SOURCES to sources?.map { it.id }?.toLongArray(),
|
||||||
@ -39,7 +38,6 @@ class SearchController(
|
|||||||
runBlocking {
|
runBlocking {
|
||||||
Injekt.get<GetManga>()
|
Injekt.get<GetManga>()
|
||||||
.await(mangaId)
|
.await(mangaId)
|
||||||
?.toDbManga()
|
|
||||||
},
|
},
|
||||||
sources.map { Injekt.get<SourceManager>().getOrStub(it) }.filterIsInstance<CatalogueSource>(),
|
sources.map { Injekt.get<SourceManager>().getOrStub(it) }.filterIsInstance<CatalogueSource>(),
|
||||||
) {
|
) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.kanade.tachiyomi.ui.browse.migration.search
|
package eu.kanade.tachiyomi.ui.browse.migration.search
|
||||||
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchCardItem
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchCardItem
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchItem
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchItem
|
||||||
|
@ -3,8 +3,7 @@ package eu.kanade.tachiyomi.ui.browse.migration.search
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import eu.kanade.domain.manga.model.toDbManga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListController
|
import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListController
|
||||||
@ -32,7 +31,7 @@ class SourceSearchController(
|
|||||||
val migrationListController = targetController as? MigrationListController ?: return false
|
val migrationListController = targetController as? MigrationListController ?: return false
|
||||||
val sourceManager = Injekt.get<SourceManager>()
|
val sourceManager = Injekt.get<SourceManager>()
|
||||||
val source = sourceManager.get(manga.source) ?: return false
|
val source = sourceManager.get(manga.source) ?: return false
|
||||||
migrationListController.useMangaForMigration(manga.toDbManga(), source)
|
migrationListController.useMangaForMigration(manga, source)
|
||||||
router.popCurrentController()
|
router.popCurrentController()
|
||||||
router.popCurrentController()
|
router.popCurrentController()
|
||||||
return true
|
return true
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package eu.kanade.tachiyomi.ui.browse.source.globalsearch
|
package eu.kanade.tachiyomi.ui.browse.source.globalsearch
|
||||||
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapter that holds the manga items from search results.
|
* Adapter that holds the manga items from search results.
|
||||||
|
@ -4,8 +4,8 @@ import android.view.View
|
|||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import coil.dispose
|
import coil.dispose
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder
|
import eu.davidea.viewholders.FlexibleViewHolder
|
||||||
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
|
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerCardItemBinding
|
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerCardItemBinding
|
||||||
import eu.kanade.tachiyomi.util.view.loadAutoPause
|
import eu.kanade.tachiyomi.util.view.loadAutoPause
|
||||||
|
|
||||||
|
@ -5,9 +5,8 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import uy.kohesive.injekt.api.get
|
|
||||||
|
|
||||||
class GlobalSearchCardItem(val manga: Manga) : AbstractFlexibleItem<GlobalSearchCardHolder>() {
|
class GlobalSearchCardItem(val manga: Manga) : AbstractFlexibleItem<GlobalSearchCardHolder>() {
|
||||||
|
|
||||||
@ -36,6 +35,6 @@ class GlobalSearchCardItem(val manga: Manga) : AbstractFlexibleItem<GlobalSearch
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return manga.id?.toInt() ?: 0
|
return manga.id.hashCode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,8 @@ import androidx.appcompat.widget.SearchView
|
|||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import dev.chrisbanes.insetter.applyInsetter
|
import dev.chrisbanes.insetter.applyInsetter
|
||||||
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding
|
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
@ -71,7 +71,7 @@ open class GlobalSearchController(
|
|||||||
* @param manga clicked item containing manga information.
|
* @param manga clicked item containing manga information.
|
||||||
*/
|
*/
|
||||||
override fun onMangaClick(manga: Manga) {
|
override fun onMangaClick(manga: Manga) {
|
||||||
router.pushController(MangaController(manga.id!!, true))
|
router.pushController(MangaController(manga.id, true))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,7 +4,7 @@ import android.view.View
|
|||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder
|
import eu.davidea.viewholders.FlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerCardBinding
|
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerCardBinding
|
||||||
import eu.kanade.tachiyomi.source.LocalSource
|
import eu.kanade.tachiyomi.source.LocalSource
|
||||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
||||||
@ -92,7 +92,7 @@ class GlobalSearchHolder(view: View, val adapter: GlobalSearchAdapter) :
|
|||||||
private fun getHolder(manga: Manga): GlobalSearchCardHolder? {
|
private fun getHolder(manga: Manga): GlobalSearchCardHolder? {
|
||||||
mangaAdapter.allBoundViewHolders.forEach { holder ->
|
mangaAdapter.allBoundViewHolders.forEach { holder ->
|
||||||
val item = mangaAdapter.getItem(holder.bindingAdapterPosition)
|
val item = mangaAdapter.getItem(holder.bindingAdapterPosition)
|
||||||
if (item != null && item.manga.id!! == manga.id!!) {
|
if (item != null && item.manga.id == manga.id) {
|
||||||
return holder as GlobalSearchCardHolder
|
return holder as GlobalSearchCardHolder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,7 @@ open class GlobalSearchPresenter(
|
|||||||
.map { it.mangas }
|
.map { it.mangas }
|
||||||
.map { list -> list.map { networkToLocalManga(it, source.id) } } // Convert to local manga
|
.map { list -> list.map { networkToLocalManga(it, source.id) } } // Convert to local manga
|
||||||
.doOnNext { fetchImage(it, source) } // Load manga covers
|
.doOnNext { fetchImage(it, source) } // Load manga covers
|
||||||
.map { list -> createCatalogueSearchItem(source, list.map { GlobalSearchCardItem(it) }) }
|
.map { list -> createCatalogueSearchItem(source, list.map { GlobalSearchCardItem(it.toDomainManga()!!) }) }
|
||||||
},
|
},
|
||||||
5,
|
5,
|
||||||
)
|
)
|
||||||
@ -240,7 +240,7 @@ open class GlobalSearchPresenter(
|
|||||||
.subscribe(
|
.subscribe(
|
||||||
{ (source, manga) ->
|
{ (source, manga) ->
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
view?.onMangaInitialized(source, manga)
|
view?.onMangaInitialized(source, manga.toDomainManga()!!)
|
||||||
},
|
},
|
||||||
{ error ->
|
{ error ->
|
||||||
logcat(LogPriority.ERROR, error)
|
logcat(LogPriority.ERROR, error)
|
||||||
|
@ -873,7 +873,7 @@ class LibraryController(
|
|||||||
}
|
}
|
||||||
val activity = activity ?: return
|
val activity = activity ?: return
|
||||||
val chapter = presenter.getFirstUnread(manga) ?: return
|
val chapter = presenter.getFirstUnread(manga) ?: return
|
||||||
val intent = ReaderActivity.newIntent(activity, manga.id, chapter.id!!)
|
val intent = ReaderActivity.newIntent(activity, manga.id, chapter.id)
|
||||||
destroyActionModeIfNeeded()
|
destroyActionModeIfNeeded()
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import eu.kanade.domain.category.model.Category
|
|||||||
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
|
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
|
||||||
import eu.kanade.domain.chapter.interactor.GetMergedChapterByMangaId
|
import eu.kanade.domain.chapter.interactor.GetMergedChapterByMangaId
|
||||||
import eu.kanade.domain.chapter.interactor.UpdateChapter
|
import eu.kanade.domain.chapter.interactor.UpdateChapter
|
||||||
|
import eu.kanade.domain.chapter.model.Chapter
|
||||||
import eu.kanade.domain.chapter.model.ChapterUpdate
|
import eu.kanade.domain.chapter.model.ChapterUpdate
|
||||||
import eu.kanade.domain.chapter.model.toDbChapter
|
import eu.kanade.domain.chapter.model.toDbChapter
|
||||||
import eu.kanade.domain.manga.interactor.GetLibraryManga
|
import eu.kanade.domain.manga.interactor.GetLibraryManga
|
||||||
@ -22,7 +23,6 @@ import eu.kanade.domain.manga.model.toDbManga
|
|||||||
import eu.kanade.domain.track.interactor.GetTracks
|
import eu.kanade.domain.track.interactor.GetTracks
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||||
import eu.kanade.tachiyomi.data.library.CustomMangaManager
|
import eu.kanade.tachiyomi.data.library.CustomMangaManager
|
||||||
@ -767,7 +767,7 @@ class LibraryPresenter(
|
|||||||
updateChapter.awaitAll(toUpdate)
|
updateChapter.awaitAll(toUpdate)
|
||||||
|
|
||||||
if (read && preferences.removeAfterMarkedAsRead()) {
|
if (read && preferences.removeAfterMarkedAsRead()) {
|
||||||
deleteChapters(manga, chapters.map { it.toDbChapter() })
|
deleteChapters(manga, chapters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -779,12 +779,12 @@ class LibraryPresenter(
|
|||||||
if (source is MergedSource) {
|
if (source is MergedSource) {
|
||||||
val mergedMangas = runBlocking { getMergedMangaById.await(manga.id) }
|
val mergedMangas = runBlocking { getMergedMangaById.await(manga.id) }
|
||||||
val sources = mergedMangas.distinctBy { it.source }.map { sourceManager.getOrStub(it.source) }
|
val sources = mergedMangas.distinctBy { it.source }.map { sourceManager.getOrStub(it.source) }
|
||||||
chapters.groupBy { it.manga_id }.forEach { (mangaId, chapters) ->
|
chapters.groupBy { it.mangaId }.forEach { (mangaId, chapters) ->
|
||||||
val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: return@forEach
|
val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: return@forEach
|
||||||
val mergedMangaSource = sources.firstOrNull { it.id == mergedManga.source } ?: return@forEach
|
val mergedMangaSource = sources.firstOrNull { it.id == mergedManga.source } ?: return@forEach
|
||||||
downloadManager.deleteChapters(chapters, mergedManga.toDbManga(), mergedMangaSource)
|
downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, mergedManga.toDbManga(), mergedMangaSource)
|
||||||
}
|
}
|
||||||
} else /* SY <-- */ downloadManager.deleteChapters(chapters, manga.toDbManga(), source)
|
} else /* SY <-- */ downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, manga.toDbManga(), source)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -851,13 +851,13 @@ class LibraryPresenter(
|
|||||||
/** Returns first unread chapter of a manga */
|
/** Returns first unread chapter of a manga */
|
||||||
fun getFirstUnread(manga: Manga): Chapter? {
|
fun getFirstUnread(manga: Manga): Chapter? {
|
||||||
val chapters = if (manga.source == MERGED_SOURCE_ID) {
|
val chapters = if (manga.source == MERGED_SOURCE_ID) {
|
||||||
(sourceManager.get(MERGED_SOURCE_ID) as MergedSource).getChaptersAsBlockingAsDbChapter(manga.id)
|
(sourceManager.get(MERGED_SOURCE_ID) as MergedSource).getChaptersAsBlocking(manga.id)
|
||||||
} else runBlocking { getChapterByMangaId.await(manga.id) }.map { it.toDbChapter() }
|
} else runBlocking { getChapterByMangaId.await(manga.id) }
|
||||||
return if (manga.isEhBasedManga()) {
|
return if (manga.isEhBasedManga()) {
|
||||||
val chapter = chapters.sortedBy { it.source_order }.getOrNull(0)
|
val chapter = chapters.sortedBy { it.sourceOrder }.getOrNull(0)
|
||||||
if (chapter?.read == false) chapter else null
|
if (chapter?.read == false) chapter else null
|
||||||
} else {
|
} else {
|
||||||
chapters.sortedByDescending { it.source_order }.find { !it.read }
|
chapters.sortedByDescending { it.sourceOrder }.find { !it.read }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,9 +38,7 @@ import eu.kanade.domain.track.interactor.InsertTrack
|
|||||||
import eu.kanade.domain.track.model.toDbTrack
|
import eu.kanade.domain.track.model.toDbTrack
|
||||||
import eu.kanade.domain.track.model.toDomainTrack
|
import eu.kanade.domain.track.model.toDomainTrack
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.Track
|
import eu.kanade.tachiyomi.data.database.models.Track
|
||||||
import eu.kanade.tachiyomi.data.database.models.toDomainChapter
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||||
import eu.kanade.tachiyomi.data.download.model.Download
|
import eu.kanade.tachiyomi.data.download.model.Download
|
||||||
@ -755,7 +753,7 @@ class MangaPresenter(
|
|||||||
getTracks.subscribe(manga.id)
|
getTracks.subscribe(manga.id)
|
||||||
.catch { logcat(LogPriority.ERROR, it) }
|
.catch { logcat(LogPriority.ERROR, it) }
|
||||||
.map { tracks ->
|
.map { tracks ->
|
||||||
val loggedServicesId = loggedServices.map { it.id.toLong() }
|
val loggedServicesId = loggedServices.map { it.id }
|
||||||
tracks
|
tracks
|
||||||
.filter { it.syncId in loggedServicesId }
|
.filter { it.syncId in loggedServicesId }
|
||||||
// SY -->
|
// SY -->
|
||||||
@ -867,8 +865,7 @@ class MangaPresenter(
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (manualFetch) {
|
if (manualFetch) {
|
||||||
val dbChapters = newChapters.map { it.toDbChapter() }
|
downloadNewChapters(newChapters)
|
||||||
downloadNewChapters(dbChapters)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
successState.source.fetchChaptersForMergedManga(successState.manga, manualFetch, true, dedupe)
|
successState.source.fetchChaptersForMergedManga(successState.manga, manualFetch, true, dedupe)
|
||||||
@ -1012,12 +1009,12 @@ class MangaPresenter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun downloadNewChapters(chapters: List<Chapter>) {
|
private fun downloadNewChapters(chapters: List<DomainChapter>) {
|
||||||
presenterScope.launchIO {
|
presenterScope.launchIO {
|
||||||
val manga = successState?.manga ?: return@launchIO
|
val manga = successState?.manga ?: return@launchIO
|
||||||
val categories = getCategories.await(manga.id).map { it.id }
|
val categories = getCategories.await(manga.id).map { it.id }
|
||||||
if (chapters.isEmpty() || !manga.shouldDownloadNewChapters(categories, preferences) || manga.isEhBasedManga()) return@launchIO
|
if (chapters.isEmpty() || !manga.shouldDownloadNewChapters(categories, preferences) || manga.isEhBasedManga()) return@launchIO
|
||||||
downloadChapters(chapters.map { it.toDomainChapter()!! })
|
downloadChapters(chapters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1246,7 +1243,7 @@ class MangaPresenter(
|
|||||||
val manga = successState?.manga ?: return
|
val manga = successState?.manga ?: return
|
||||||
|
|
||||||
presenterScope.launchIO {
|
presenterScope.launchIO {
|
||||||
deleteTrack.await(manga.id, service.id.toLong())
|
deleteTrack.await(manga.id, service.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ class ReaderPresenter(
|
|||||||
val chapters = runBlocking {
|
val chapters = runBlocking {
|
||||||
/* SY --> */ if (manga.source == MERGED_SOURCE_ID) {
|
/* SY --> */ if (manga.source == MERGED_SOURCE_ID) {
|
||||||
(sourceManager.get(MERGED_SOURCE_ID) as MergedSource)
|
(sourceManager.get(MERGED_SOURCE_ID) as MergedSource)
|
||||||
.getChaptersAsBlocking(manga.id!!)
|
.getChapters(manga.id!!)
|
||||||
} else /* SY <-- */ getChapterByMangaId.await(manga.id!!)
|
} else /* SY <-- */ getChapterByMangaId.await(manga.id!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user