mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Change return value of SyncChaptersWithSource.await() (#7715)
				
					
				
			* Change return value of `SyncChaptersWithSource.await()` `updatedToAdd.subtract(reAdded).toList()` never worked as at this point `updatedToAdd` contained ids from db where `reAdded` had default one. Was the same case before the rewrite. Removed `toDelete` from return value as it was not being used anywhere * Add doc string * Use HashSet Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com> Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
This commit is contained in:
		| @@ -28,11 +28,19 @@ class SyncChaptersWithSource( | ||||
|     private val getChapterByMangaId: GetChapterByMangaId = Injekt.get(), | ||||
| ) { | ||||
|  | ||||
|     /** | ||||
|      * Method to synchronize db chapters with source ones | ||||
|      * | ||||
|      * @param rawSourceChapters the chapters from the source. | ||||
|      * @param manga the manga the chapters belong to. | ||||
|      * @param source the source the manga belongs to. | ||||
|      * @return Newly added chapters | ||||
|      */ | ||||
|     suspend fun await( | ||||
|         rawSourceChapters: List<SChapter>, | ||||
|         manga: Manga, | ||||
|         source: Source, | ||||
|     ): Pair<List<Chapter>, List<Chapter>> { | ||||
|     ): List<Chapter> { | ||||
|         if (rawSourceChapters.isEmpty() && source.id != LocalSource.ID) { | ||||
|             throw NoChaptersException() | ||||
|         } | ||||
| @@ -114,7 +122,7 @@ class SyncChaptersWithSource( | ||||
|  | ||||
|         // Return if there's nothing to add, delete or change, avoiding unnecessary db transactions. | ||||
|         if (toAdd.isEmpty() && toDelete.isEmpty() && toChange.isEmpty()) { | ||||
|             return Pair(emptyList(), emptyList()) | ||||
|             return emptyList() | ||||
|         } | ||||
|  | ||||
|         val reAdded = mutableListOf<Chapter>() | ||||
| @@ -174,7 +182,8 @@ class SyncChaptersWithSource( | ||||
|         // Note that last_update actually represents last time the chapter list changed at all | ||||
|         updateManga.awaitUpdateLastUpdate(manga.id) | ||||
|  | ||||
|         @Suppress("ConvertArgumentToSet") // See tachiyomiorg/tachiyomi#6372. | ||||
|         return Pair(updatedToAdd.subtract(reAdded).toList(), toDelete.subtract(reAdded).toList()) | ||||
|         val reAddedUrls = reAdded.map { it.url }.toHashSet() | ||||
|  | ||||
|         return updatedToAdd.filterNot { it.url in reAddedUrls } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -350,7 +350,7 @@ class LibraryUpdateService( | ||||
|                                             else -> { | ||||
|                                                 // Convert to the manga that contains new chapters | ||||
|                                                 mangaWithNotif.toDomainManga()?.let { domainManga -> | ||||
|                                                     val (newChapters, _) = updateManga(domainManga) | ||||
|                                                     val newChapters = updateManga(domainManga) | ||||
|                                                     val newDbChapters = newChapters.map { it.toDbChapter() } | ||||
|  | ||||
|                                                     if (newChapters.isNotEmpty()) { | ||||
| @@ -428,7 +428,7 @@ class LibraryUpdateService( | ||||
|      * @param manga the manga to update. | ||||
|      * @return a pair of the inserted and removed chapters. | ||||
|      */ | ||||
|     private suspend fun updateManga(manga: DomainManga): Pair<List<DomainChapter>, List<DomainChapter>> { | ||||
|     private suspend fun updateManga(manga: DomainManga): List<DomainChapter> { | ||||
|         val source = sourceManager.getOrStub(manga.source) | ||||
|  | ||||
|         val mangaInfo: MangaInfo = manga.toMangaInfo() | ||||
| @@ -444,7 +444,7 @@ class LibraryUpdateService( | ||||
|  | ||||
|         // Get manga from database to account for if it was removed during the update | ||||
|         val dbManga = getManga.await(manga.id) | ||||
|             ?: return Pair(emptyList(), emptyList()) | ||||
|             ?: return emptyList() | ||||
|  | ||||
|         // [dbmanga] was used so that manga data doesn't get overwritten | ||||
|         // in case manga gets new chapter | ||||
|   | ||||
| @@ -521,7 +521,7 @@ class MangaPresenter( | ||||
|                     val chapters = successState.source.getChapterList(successState.manga.toMangaInfo()) | ||||
|                         .map { it.toSChapter() } | ||||
|  | ||||
|                     val (newChapters, _) = syncChaptersWithSource.await( | ||||
|                     val newChapters = syncChaptersWithSource.await( | ||||
|                         chapters, | ||||
|                         successState.manga, | ||||
|                         successState.source, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user