mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Update chapter progress upon registering tracker (closes #7209)
Co-authored-by: Saud-97 <Saud-97@users.noreply.github.com>
This commit is contained in:
		@@ -936,20 +936,31 @@ class MangaPresenter(
 | 
			
		||||
            item.manga_id = successState.manga.id
 | 
			
		||||
            launchIO {
 | 
			
		||||
                try {
 | 
			
		||||
                    val allChapters = successState.chapters
 | 
			
		||||
                        .map { it.chapter.toDbChapter() }
 | 
			
		||||
                    val allChapters = successState.chapters.map { it.chapter }
 | 
			
		||||
                    val hasReadChapters = allChapters.any { it.read }
 | 
			
		||||
                    service.bind(item, hasReadChapters)
 | 
			
		||||
 | 
			
		||||
                    item.toDomainTrack(idRequired = false)?.let { track ->
 | 
			
		||||
                        insertTrack.await(track)
 | 
			
		||||
 | 
			
		||||
                        (service as? EnhancedTrackService)?.let { _ ->
 | 
			
		||||
                            val chapters = successState.chapters
 | 
			
		||||
                                .map { it.chapter }
 | 
			
		||||
                        // Update chapter progress if newer chapters marked read locally
 | 
			
		||||
                        if (hasReadChapters) {
 | 
			
		||||
                            val latestLocalReadChapterNumber = allChapters
 | 
			
		||||
                                .sortedBy { it.chapterNumber }
 | 
			
		||||
                                .takeWhile { it.read }
 | 
			
		||||
                                .lastOrNull()
 | 
			
		||||
                                ?.chapterNumber?.toDouble() ?: -1.0
 | 
			
		||||
 | 
			
		||||
                            syncChaptersWithTrackServiceTwoWay
 | 
			
		||||
                                .await(chapters, track, service)
 | 
			
		||||
                            if (latestLocalReadChapterNumber >= track.lastChapterRead) {
 | 
			
		||||
                                val updatedTrack = track.copy(
 | 
			
		||||
                                    lastChapterRead = latestLocalReadChapterNumber,
 | 
			
		||||
                                )
 | 
			
		||||
                                setTrackerLastChapterRead(TrackItem(updatedTrack.toDbTrack(), service), latestLocalReadChapterNumber.toInt())
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (service is EnhancedTrackService) {
 | 
			
		||||
                            syncChaptersWithTrackServiceTwoWay.await(allChapters, track, service)
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } catch (e: Throwable) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user