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