Avoid migration failing if previous source doesn't exist

(cherry picked from commit 89dbb4d300b7a5dc6f1dcb01d6366f731f730217)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt
This commit is contained in:
arkon 2022-01-23 17:21:23 -05:00 committed by Jobobby04
parent e32e696606
commit b95dfa2974
3 changed files with 5 additions and 5 deletions

View File

@ -30,7 +30,7 @@ interface EnhancedTrackService {
/** /**
* Checks whether the provided source/track/manga triplet is from this TrackService * Checks whether the provided source/track/manga triplet is from this TrackService
*/ */
fun isTrackFrom(track: Track, manga: Manga, source: Source): Boolean fun isTrackFrom(track: Track, manga: Manga, source: Source?): Boolean
/** /**
* Migrates the given track for the manga to the newSource, if possible * Migrates the given track for the manga to the newSource, if possible

View File

@ -105,8 +105,8 @@ class Komga(private val context: Context, id: Int) : TrackService(id), EnhancedT
null null
} }
override fun isTrackFrom(track: Track, manga: Manga, source: Source): Boolean = override fun isTrackFrom(track: Track, manga: Manga, source: Source?): Boolean =
accept(source) && track.tracking_url == manga.url track.tracking_url == manga.url && source?.let { accept(it) } == true
override fun migrateTrack(track: Track, manga: Manga, newSource: Source): Track? = override fun migrateTrack(track: Track, manga: Manga, newSource: Source): Track? =
if (accept(newSource)) { if (accept(newSource)) {

View File

@ -46,8 +46,8 @@ class MigrationMangaPresenter(
// SY --> // SY -->
fun migrateManga(prevManga: Manga, manga: Manga, replace: Boolean) { fun migrateManga(prevManga: Manga, manga: Manga, replace: Boolean) {
val prevSource = sourceManager.get(prevManga.source)
val source = sourceManager.get(manga.source) ?: return val source = sourceManager.get(manga.source) ?: return
val prevSource = sourceManager.get(prevManga.source)
Observable.defer { runAsObservable { source.getChapterList(manga.toMangaInfo()).map { it.toSChapter() } } }.onErrorReturn { emptyList() } Observable.defer { runAsObservable { source.getChapterList(manga.toMangaInfo()).map { it.toSChapter() } } }.onErrorReturn { emptyList() }
.doOnNext { migrateMangaInternal(prevSource, source, it, prevManga, manga, replace) } .doOnNext { migrateMangaInternal(prevSource, source, it, prevManga, manga, replace) }
@ -105,7 +105,7 @@ class MigrationMangaPresenter(
track.manga_id = manga.id!! track.manga_id = manga.id!!
val service = enhancedServices val service = enhancedServices
.firstOrNull { prevSource != null && it.isTrackFrom(track, prevManga, prevSource) } .firstOrNull { it.isTrackFrom(track, prevManga, prevSource) }
if (service != null) service.migrateTrack(track, manga, source) if (service != null) service.migrateTrack(track, manga, source)
else track else track
} }