This commit is contained in:
Jobobby04 2021-06-29 19:00:34 -04:00
parent 56f4b1f224
commit 60f9391b4e
4 changed files with 21 additions and 20 deletions

View File

@ -612,7 +612,7 @@ class MangaController :
// SY -->
fun openMergedMangaWebview() {
val sourceManager: SourceManager = Injekt.get()
val mergedManga = presenter.mergedManga.filterNot { it.source == MERGED_SOURCE_ID }
val mergedManga = presenter.mergedManga.values.filterNot { it.source == MERGED_SOURCE_ID }
val sources = mergedManga.map { sourceManager.getOrStub(it.source) }
MaterialDialog(activity!!)
.title(R.string.action_open_in_web_view)

View File

@ -148,7 +148,7 @@ class MangaPresenter(
var meta: RaisedSearchMetadata? = null
var mergedManga = emptyList<Manga>()
var mergedManga = emptyMap<Long, Manga>()
private set
var dedupe: Boolean = true
@ -161,7 +161,7 @@ class MangaPresenter(
// SY -->
if (source is MergedSource) {
launchIO { mergedManga = db.getMergedMangas(manga.id!!).executeAsBlocking() }
launchIO { mergedManga = db.getMergedMangas(manga.id!!).executeAsBlocking().associateBy { it.id!! } }
}
// SY <--
@ -559,7 +559,7 @@ class MangaPresenter(
fun deleteDownloads() {
// SY -->
if (source is MergedSource) {
val mergedManga = mergedManga.map { it to sourceManager.getOrStub(it.source) }
val mergedManga = mergedManga.map { it.value to sourceManager.getOrStub(it.value.source) }
mergedManga.forEach { (manga, source) ->
downloadManager.deleteManga(manga, source)
}
@ -685,7 +685,7 @@ class MangaPresenter(
private fun observeDownloads() {
// SY -->
val isMergedSource = source is MergedSource
val mergedIds = if (isMergedSource) mergedManga.mapNotNull { it.id } else emptyList()
val mergedIds = if (isMergedSource) mergedManga.keys else emptySet()
// SY <--
observeDownloadsStatusSubscription?.let { remove(it) }
observeDownloadsStatusSubscription = downloadManager.queue.getStatusObservable()
@ -741,7 +741,7 @@ class MangaPresenter(
val isMergedSource = source is MergedSource
// SY <--
chapters
.filter { downloadManager.isChapterDownloaded(/* SY --> */ if (isMergedSource) it.toMergedDownloadChapter() else it, if (isMergedSource) mergedManga.firstOrNull { manga -> it.manga_id == manga.id } ?: manga else /* SY <-- */ manga) }
.filter { downloadManager.isChapterDownloaded(/* SY --> */ if (isMergedSource) it.toMergedDownloadChapter() else it, if (isMergedSource) mergedManga[it.manga_id] ?: manga else /* SY <-- */ manga) }
.forEach { it.status = Download.State.DOWNLOADED }
}
@ -921,7 +921,7 @@ class MangaPresenter(
// SY -->
if (source is MergedSource) {
chapters.groupBy { it.manga_id }.forEach { map ->
val manga = mergedManga.firstOrNull { it.id == map.key } ?: return@forEach
val manga = mergedManga[map.key] ?: return@forEach
downloadManager.downloadChapters(manga, map.value.map { it.toMergedDownloadChapter() })
}
} else /* SY <-- */ downloadManager.downloadChapters(manga, chapters)
@ -1117,7 +1117,7 @@ class MangaPresenter(
.observeOn(AndroidSchedulers.mainThread())
// SY -->
.map { trackItems ->
if (manga.source in mangaDexSourceIds || mergedManga.any { it.source in mangaDexSourceIds }) {
if (manga.source in mangaDexSourceIds || mergedManga.values.any { it.source in mangaDexSourceIds }) {
val mdTrack = trackItems.firstOrNull { it.service.id == TrackManager.MDLIST }
when {
mdTrack == null -> {
@ -1137,7 +1137,7 @@ class MangaPresenter(
// SY -->
private fun createMdListTrack(): TrackItem {
val mdManga = mergedManga.find { it.source in mangaDexSourceIds }
val mdManga = mergedManga.values.find { it.source in mangaDexSourceIds }
val track = trackManager.mdList.createInitialTracker(manga, mdManga ?: manga)
track.id = db.insertTrack(track).executeAsBlocking().insertedId()
return TrackItem(track, trackManager.mdList)

View File

@ -84,7 +84,7 @@ class ReaderPresenter(
// SY -->
var meta: RaisedSearchMetadata? = null
private set
var mergedManga: List<Manga>? = null
var mergedManga: Map<Long, Manga>? = null
private set
// SY <--
@ -284,8 +284,8 @@ class ReaderPresenter(
val context = Injekt.get<Application>()
val source = sourceManager.getOrStub(manga.source)
val mergedReferences = if (source is MergedSource) db.getMergedMangaReferences(manga.id!!).executeAsBlocking() else emptyList()
mergedManga = if (source is MergedSource) db.getMergedMangas(manga.id!!).executeAsBlocking() else emptyList()
loader = ChapterLoader(context, downloadManager, manga, source, sourceManager, mergedReferences, mergedManga ?: emptyList())
mergedManga = if (source is MergedSource) db.getMergedMangas(manga.id!!).executeAsBlocking().associateBy { it.id!! } else emptyMap()
loader = ChapterLoader(context, downloadManager, manga, source, sourceManager, mergedReferences, mergedManga ?: emptyMap())
Observable.just(manga).subscribeLatestCache(ReaderActivity::setManga)
viewerChaptersRelay.subscribeLatestCache(ReaderActivity::setChapters)
@ -601,11 +601,12 @@ class ReaderPresenter(
// SY -->
return when {
resolveDefault && readingMode == ReadingModeType.DEFAULT && preferences.useAutoWebtoon().get() -> {
manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name)) ?: if (manga.readingModeType == ReadingModeType.DEFAULT.flagValue) {
default
} else {
readingMode.prefValue
}
manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name))
?: if (manga.readingModeType == ReadingModeType.DEFAULT.flagValue) {
default
} else {
readingMode.prefValue
}
}
resolveDefault && readingMode == ReadingModeType.DEFAULT -> default
else -> manga.readingModeType
@ -929,7 +930,7 @@ class ReaderPresenter(
val manga = if (mergedManga.isNullOrEmpty()) {
manga
} else {
mergedManga?.find { it.id == chapter.chapter.manga_id }
mergedManga.orEmpty()[chapter.chapter.manga_id]
} ?: return
// SY <--

View File

@ -29,7 +29,7 @@ class ChapterLoader(
// SY -->
private val sourceManager: SourceManager,
private val mergedReferences: List<MergedMangaReference>,
private val mergedManga: List<Manga>
private val mergedManga: Map<Long, Manga>
// SY <--
) {
@ -93,7 +93,7 @@ class ChapterLoader(
source is MergedSource -> {
val mangaReference = mergedReferences.firstOrNull { it.mangaId == chapter.chapter.manga_id } ?: error("Merge reference null")
val source = sourceManager.get(mangaReference.mangaSourceId) ?: error("Source ${mangaReference.mangaSourceId} was null")
val manga = mergedManga.firstOrNull { it.id == chapter.chapter.manga_id } ?: error("Manga for merged chapter was null")
val manga = mergedManga[chapter.chapter.manga_id] ?: error("Manga for merged chapter was null")
val isMergedMangaDownloaded = downloadManager.isChapterDownloaded(chapter.chapter, manga, true)
when {
isMergedMangaDownloaded -> DownloadPageLoader(chapter, manga, source, downloadManager)