diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt index 6f9bc20857..4b4bb15d03 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt @@ -583,7 +583,7 @@ class MangaDetailsController : presenter.fetchChapters(refreshTracker == null) if (refreshTracker != null) { trackingBottomSheet?.refreshItem(refreshTracker ?: 0) - presenter.refreshTracking() + presenter.refreshTracking(trackIndex = refreshTracker) refreshTracker = null } // fetch cover again in case the user set a new cover while reading diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index 4043599108..82a7b0cc4c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -886,26 +886,27 @@ class MangaDetailsPresenter( withContext(Dispatchers.Main) { controller?.refreshTracking(trackList) } } - fun refreshTracking(showOfflineSnack: Boolean = false) { + fun refreshTracking(showOfflineSnack: Boolean = false, trackIndex: Int? = null) { if (controller?.isNotOnline(showOfflineSnack) == false) { presenterScope.launch { - val asyncList = trackList.filter { it.track != null }.map { item -> - async(Dispatchers.IO) { - val trackItem = try { - item.service.refresh(item.track!!) - } catch (e: Exception) { - trackError(e) - null - } - if (trackItem != null) { - db.insertTrack(trackItem).executeAsBlocking() - if (item.service is EnhancedTrackService) { - syncChaptersWithTrackServiceTwoWay(db, chapters, trackItem, item.service) + val asyncList = (trackIndex?.let { listOf(trackList[it]) } ?: trackList.filter { it.track != null }) + .map { item -> + async(Dispatchers.IO) { + val trackItem = try { + item.service.refresh(item.track!!) + } catch (e: Exception) { + trackError(e) + null } - trackItem - } else item.track + if (trackItem != null) { + db.insertTrack(trackItem).executeAsBlocking() + if (item.service is EnhancedTrackService) { + syncChaptersWithTrackServiceTwoWay(db, chapters, trackItem, item.service) + } + trackItem + } else item.track + } } - } asyncList.awaitAll() fetchTracks() }