mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Remove duplicated logic for binding enhanced trackers
This commit is contained in:
		@@ -17,31 +17,29 @@ class AddTracks(
 | 
			
		||||
    private val syncChapterProgressWithTrack: SyncChapterProgressWithTrack,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    suspend fun bindEnhancedTracks(manga: Manga, source: Source) {
 | 
			
		||||
        withNonCancellableContext {
 | 
			
		||||
            getTracks.await(manga.id)
 | 
			
		||||
                .filterIsInstance<EnhancedTracker>()
 | 
			
		||||
                .filter { it.accept(source) }
 | 
			
		||||
                .forEach { service ->
 | 
			
		||||
                    try {
 | 
			
		||||
                        service.match(manga)?.let { track ->
 | 
			
		||||
                            track.manga_id = manga.id
 | 
			
		||||
                            (service as Tracker).bind(track)
 | 
			
		||||
                            insertTrack.await(track.toDomainTrack()!!)
 | 
			
		||||
    suspend fun bindEnhancedTracks(manga: Manga, source: Source) = withNonCancellableContext {
 | 
			
		||||
        getTracks.await(manga.id)
 | 
			
		||||
            .filterIsInstance<EnhancedTracker>()
 | 
			
		||||
            .filter { it.accept(source) }
 | 
			
		||||
            .forEach { service ->
 | 
			
		||||
                try {
 | 
			
		||||
                    service.match(manga)?.let { track ->
 | 
			
		||||
                        track.manga_id = manga.id
 | 
			
		||||
                        (service as Tracker).bind(track)
 | 
			
		||||
                        insertTrack.await(track.toDomainTrack()!!)
 | 
			
		||||
 | 
			
		||||
                            syncChapterProgressWithTrack.await(
 | 
			
		||||
                                manga.id,
 | 
			
		||||
                                track.toDomainTrack()!!,
 | 
			
		||||
                                service,
 | 
			
		||||
                            )
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch (e: Exception) {
 | 
			
		||||
                        logcat(
 | 
			
		||||
                            LogPriority.WARN,
 | 
			
		||||
                            e,
 | 
			
		||||
                        ) { "Could not match manga: ${manga.title} with service $service" }
 | 
			
		||||
                        syncChapterProgressWithTrack.await(
 | 
			
		||||
                            manga.id,
 | 
			
		||||
                            track.toDomainTrack()!!,
 | 
			
		||||
                            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) {
 | 
			
		||||
            val intent = ReaderActivity.newIntent(context, chapter.mangaId, chapter.id)
 | 
			
		||||
            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.model.downloadedFilter
 | 
			
		||||
import eu.kanade.domain.manga.model.toSManga
 | 
			
		||||
import eu.kanade.domain.track.interactor.AddTracks
 | 
			
		||||
import eu.kanade.domain.ui.UiPreferences
 | 
			
		||||
import eu.kanade.presentation.manga.DownloadAction
 | 
			
		||||
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.model.Download
 | 
			
		||||
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.network.HttpException
 | 
			
		||||
import eu.kanade.tachiyomi.source.Source
 | 
			
		||||
@@ -97,6 +97,7 @@ class MangaScreenModel(
 | 
			
		||||
    private val syncChaptersWithSource: SyncChaptersWithSource = Injekt.get(),
 | 
			
		||||
    private val getCategories: GetCategories = Injekt.get(),
 | 
			
		||||
    private val getTracks: GetTracks = Injekt.get(),
 | 
			
		||||
    private val addTracks: AddTracks = Injekt.get(),
 | 
			
		||||
    private val setMangaCategories: SetMangaCategories = Injekt.get(),
 | 
			
		||||
    private val mangaRepository: MangaRepository = Injekt.get(),
 | 
			
		||||
    val snackbarHostState: SnackbarHostState = SnackbarHostState(),
 | 
			
		||||
@@ -315,24 +316,7 @@ class MangaScreenModel(
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Finally match with enhanced tracking when available
 | 
			
		||||
                val source = 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"
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                addTracks.bindEnhancedTracks(manga, state.source)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user