Get MDList working with merged manga
This commit is contained in:
parent
227de5d838
commit
eb5469d362
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user