Opening a tracker webpage and returning to app now only refreshes that single tracker

This commit is contained in:
Jays2Kings 2022-06-04 16:51:55 -04:00
parent 72ded798e8
commit 5070710add
2 changed files with 18 additions and 17 deletions

View file

@ -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

View file

@ -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()
}