fix(MangaDex): Fix nullability issues in track creation for MangaDex (#1527)

* fix(trackers-mangadex): Handle nullability in `createMdListTrack`

* Return null instead of throwing exception in initial track creation

* Improve error handling in `createMdListTrack`

* Change exception to return null when track not found

* handle nullability in MangaDex tracking
This commit is contained in:
Cuong-Tran 2026-04-16 12:52:51 +07:00 committed by GitHub
parent 6f06974524
commit fd60bc7f13
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -75,6 +75,7 @@ import eu.kanade.tachiyomi.util.system.toast
import exh.debug.DebugToggles
import exh.eh.EHentaiUpdateHelper
import exh.log.xLogD
import exh.log.xLogE
import exh.md.utils.FollowStatus
import exh.metadata.metadata.RaisedSearchMetadata
import exh.metadata.metadata.base.FlatMetadata
@ -1851,7 +1852,7 @@ class MangaScreenModel(
}
// KMK: auto track MangaDex
mdTrack.id !in tracks.map { it.trackerId } -> {
tracks + createMdListTrack()
createMdListTrack()?.let { tracks + it } ?: tracks
}
else -> tracks
}
@ -1880,13 +1881,15 @@ class MangaScreenModel(
}
// SY -->
private suspend fun createMdListTrack(): Track {
private suspend fun createMdListTrack(): Track? {
try {
val state = successState!!
val mdManga = state.manga.takeIf { it.source in mangaDexSourceIds }
?: state.mergedData?.manga?.values?.find { it.source in mangaDexSourceIds }
?: throw IllegalArgumentException("Could not create initial track")
?: throw IllegalArgumentException("Entry does not belong to MangaDex")
val track = trackerManager.mdList.createInitialTracker(state.manga, mdManga)
.toDomainTrack(false)!!
.toDomainTrack(false)
?: throw IllegalStateException("Could not create initial track")
insertTrack.await(track)
/* KMK -->
return TrackItem(
@ -1895,6 +1898,10 @@ class MangaScreenModel(
)
KMK <-- */
return getTracks.await(mangaId).first { it.trackerId == trackerManager.mdList.id }
} catch (e: Exception) {
xLogE("Failed to create MangaDex track", e)
return null
}
}
// SY <--