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

View File

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