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:
parent
6f06974524
commit
fd60bc7f13
1 changed files with 23 additions and 16 deletions
|
|
@ -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 <--
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue