Remove duplicated logic for binding enhanced trackers

This commit is contained in:
arkon 2023-10-08 19:19:04 -04:00
parent 77ebc362f6
commit b7d282235d
3 changed files with 25 additions and 43 deletions

View File

@ -17,8 +17,7 @@ class AddTracks(
private val syncChapterProgressWithTrack: SyncChapterProgressWithTrack, private val syncChapterProgressWithTrack: SyncChapterProgressWithTrack,
) { ) {
suspend fun bindEnhancedTracks(manga: Manga, source: Source) { suspend fun bindEnhancedTracks(manga: Manga, source: Source) = withNonCancellableContext {
withNonCancellableContext {
getTracks.await(manga.id) getTracks.await(manga.id)
.filterIsInstance<EnhancedTracker>() .filterIsInstance<EnhancedTracker>()
.filter { it.accept(source) } .filter { it.accept(source) }
@ -43,5 +42,4 @@ class AddTracks(
} }
} }
} }
}
} }

View File

@ -116,7 +116,7 @@ object HistoryTab : Tab {
} }
} }
suspend fun openChapter(context: Context, chapter: Chapter?) { private suspend fun openChapter(context: Context, chapter: Chapter?) {
if (chapter != null) { if (chapter != null) {
val intent = ReaderActivity.newIntent(context, chapter.mangaId, chapter.id) val intent = ReaderActivity.newIntent(context, chapter.mangaId, chapter.id)
context.startActivity(intent) context.startActivity(intent)

View File

@ -15,6 +15,7 @@ import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.interactor.UpdateManga
import eu.kanade.domain.manga.model.downloadedFilter import eu.kanade.domain.manga.model.downloadedFilter
import eu.kanade.domain.manga.model.toSManga import eu.kanade.domain.manga.model.toSManga
import eu.kanade.domain.track.interactor.AddTracks
import eu.kanade.domain.ui.UiPreferences import eu.kanade.domain.ui.UiPreferences
import eu.kanade.presentation.manga.DownloadAction import eu.kanade.presentation.manga.DownloadAction
import eu.kanade.presentation.manga.components.ChapterDownloadAction import eu.kanade.presentation.manga.components.ChapterDownloadAction
@ -24,7 +25,6 @@ import eu.kanade.tachiyomi.data.download.DownloadCache
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.track.EnhancedTracker import eu.kanade.tachiyomi.data.track.EnhancedTracker
import eu.kanade.tachiyomi.data.track.Tracker
import eu.kanade.tachiyomi.data.track.TrackerManager import eu.kanade.tachiyomi.data.track.TrackerManager
import eu.kanade.tachiyomi.network.HttpException import eu.kanade.tachiyomi.network.HttpException
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
@ -97,6 +97,7 @@ class MangaScreenModel(
private val syncChaptersWithSource: SyncChaptersWithSource = Injekt.get(), private val syncChaptersWithSource: SyncChaptersWithSource = Injekt.get(),
private val getCategories: GetCategories = Injekt.get(), private val getCategories: GetCategories = Injekt.get(),
private val getTracks: GetTracks = Injekt.get(), private val getTracks: GetTracks = Injekt.get(),
private val addTracks: AddTracks = Injekt.get(),
private val setMangaCategories: SetMangaCategories = Injekt.get(), private val setMangaCategories: SetMangaCategories = Injekt.get(),
private val mangaRepository: MangaRepository = Injekt.get(), private val mangaRepository: MangaRepository = Injekt.get(),
val snackbarHostState: SnackbarHostState = SnackbarHostState(), val snackbarHostState: SnackbarHostState = SnackbarHostState(),
@ -315,24 +316,7 @@ class MangaScreenModel(
} }
// Finally match with enhanced tracking when available // Finally match with enhanced tracking when available
val source = state.source addTracks.bindEnhancedTracks(manga, state.source)
state.trackItems
.map { it.tracker }
.filterIsInstance<EnhancedTracker>()
.filter { it.accept(source) }
.forEach { service ->
launchIO {
try {
service.match(manga)?.let { track ->
(service as Tracker).register(track, mangaId)
}
} catch (e: Exception) {
logcat(LogPriority.WARN, e) {
"Could not match manga: ${manga.title} with service $service"
}
}
}
}
} }
} }
} }