Remove duplicated logic for binding enhanced trackers
This commit is contained in:
parent
77ebc362f6
commit
b7d282235d
3 changed files with 25 additions and 43 deletions
|
@ -17,31 +17,29 @@ 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) }
|
.forEach { service ->
|
||||||
.forEach { service ->
|
try {
|
||||||
try {
|
service.match(manga)?.let { track ->
|
||||||
service.match(manga)?.let { track ->
|
track.manga_id = manga.id
|
||||||
track.manga_id = manga.id
|
(service as Tracker).bind(track)
|
||||||
(service as Tracker).bind(track)
|
insertTrack.await(track.toDomainTrack()!!)
|
||||||
insertTrack.await(track.toDomainTrack()!!)
|
|
||||||
|
|
||||||
syncChapterProgressWithTrack.await(
|
syncChapterProgressWithTrack.await(
|
||||||
manga.id,
|
manga.id,
|
||||||
track.toDomainTrack()!!,
|
track.toDomainTrack()!!,
|
||||||
service,
|
service,
|
||||||
)
|
)
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
logcat(
|
|
||||||
LogPriority.WARN,
|
|
||||||
e,
|
|
||||||
) { "Could not match manga: ${manga.title} with service $service" }
|
|
||||||
}
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
logcat(
|
||||||
|
LogPriority.WARN,
|
||||||
|
e,
|
||||||
|
) { "Could not match manga: ${manga.title} with service $service" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue