Get MDList working with merged manga

This commit is contained in:
Jobobby04 2021-02-11 17:02:48 -05:00
parent 227de5d838
commit eb5469d362
3 changed files with 16 additions and 6 deletions

View File

@ -268,7 +268,7 @@ class MangaPresenter(
private fun getTrackingObservable(): Observable<Int> { private fun getTrackingObservable(): Observable<Int> {
// SY --> // SY -->
val sourceIsMangaDex = source.getMainSource() is MangaDex val sourceIsMangaDex = source.getMainSource() is MangaDex || mergedManga.any { it.source in mangaDexSourceIds }
// SY <-- // SY <--
if (!trackManager.hasLoggedServices(/* SY --> */sourceIsMangaDex/* SY <-- */)) { if (!trackManager.hasLoggedServices(/* SY --> */sourceIsMangaDex/* SY <-- */)) {
return Observable.just(0) return Observable.just(0)
@ -1124,7 +1124,7 @@ class MangaPresenter(
// SY --> // SY -->
.map { trackItems -> .map { trackItems ->
val mdTrack = trackItems.firstOrNull { it.service.id == TrackManager.MDLIST } val mdTrack = trackItems.firstOrNull { it.service.id == TrackManager.MDLIST }
if (manga.source in mangaDexSourceIds) { if (manga.source in mangaDexSourceIds || mergedManga.any { it.source in mangaDexSourceIds }) {
when { when {
mdTrack == null -> { mdTrack == null -> {
trackItems trackItems
@ -1143,7 +1143,8 @@ class MangaPresenter(
// SY --> // SY -->
private fun createMdListTrack(): TrackItem { private fun createMdListTrack(): TrackItem {
val track = trackManager.mdList.createInitialTracker(manga) val mdManga = mergedManga.find { it.source in mangaDexSourceIds }
val track = trackManager.mdList.createInitialTracker(manga, mdManga ?: manga)
track.id = db.insertTrack(track).executeAsBlocking().insertedId() track.id = db.insertTrack(track).executeAsBlocking().insertedId()
return TrackItem(track, trackManager.mdList) return TrackItem(track, trackManager.mdList)
} }

View File

@ -21,11 +21,14 @@ import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.source.online.all.MangaDex import eu.kanade.tachiyomi.source.online.all.MangaDex
import eu.kanade.tachiyomi.source.online.all.MergedSource
import eu.kanade.tachiyomi.ui.manga.MangaController import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.copyToClipboard
import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.util.system.getResourceColor
import exh.merged.sql.models.MergedMangaReference
import exh.source.MERGED_SOURCE_ID import exh.source.MERGED_SOURCE_ID
import exh.source.getMainSource import exh.source.getMainSource
import exh.source.mangaDexSourceIds
import exh.util.SourceTagsUtil import exh.util.SourceTagsUtil
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
@ -45,6 +48,8 @@ class MangaInfoHeaderAdapter(
// SY --> // SY -->
private val db: DatabaseHelper by injectLazy() private val db: DatabaseHelper by injectLazy()
private val sourceManager: SourceManager by injectLazy() private val sourceManager: SourceManager by injectLazy()
private var mergedMangaReferences: List<MergedMangaReference> = emptyList()
// SY <-- // SY <--
private var manga: Manga = controller.presenter.manga private var manga: Manga = controller.presenter.manga
@ -75,6 +80,11 @@ class MangaInfoHeaderAdapter(
fun update(manga: Manga, source: Source) { fun update(manga: Manga, source: Source) {
this.manga = manga this.manga = manga
this.source = source this.source = source
// SY -->
if (source is MergedSource) {
mergedMangaReferences = db.getMergedMangaReferences(manga.id!!).executeAsBlocking()
}
// SY <--
notifyDataSetChanged() notifyDataSetChanged()
} }
@ -107,7 +117,7 @@ class MangaInfoHeaderAdapter(
with(binding.btnTracking) { with(binding.btnTracking) {
// SY --> // SY -->
val sourceIsMangaDex = source.getMainSource() is MangaDex val sourceIsMangaDex = source.getMainSource() is MangaDex || mergedMangaReferences.any { it.mangaSourceId in mangaDexSourceIds }
// SY <-- // SY <--
if (trackManager.hasLoggedServices(/* SY --> */sourceIsMangaDex/* SY <-- */)) { if (trackManager.hasLoggedServices(/* SY --> */sourceIsMangaDex/* SY <-- */)) {
isVisible = true isVisible = true
@ -250,7 +260,7 @@ class MangaInfoHeaderAdapter(
with(binding.mangaSource) { with(binding.mangaSource) {
// SY --> // SY -->
if (source?.id == MERGED_SOURCE_ID) { if (source?.id == MERGED_SOURCE_ID) {
text = db.getMergedMangaReferences(manga.id!!).executeAsBlocking().map { text = mergedMangaReferences.map {
sourceManager.getOrStub(it.mangaSourceId).toString() sourceManager.getOrStub(it.mangaSourceId).toString()
}.distinct().joinToString() }.distinct().joinToString()
} else /* SY <-- */ if (mangaSource != null) { } else /* SY <-- */ if (mangaSource != null) {

View File

@ -222,7 +222,6 @@ class FollowsHandler(val client: OkHttpClient, val headers: Headers, val prefere
followStatusParse(response) followStatusParse(response)
} catch (e: Exception) { } catch (e: Exception) {
if (e.message.equals("HTTP error 404", true)) { if (e.message.equals("HTTP error 404", true)) {
XLog.enableStackTrace(10).e(e)
Track.create(TrackManager.MDLIST).apply { Track.create(TrackManager.MDLIST).apply {
status = FollowStatus.UNFOLLOWED.int status = FollowStatus.UNFOLLOWED.int
} }