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:
parent
1cbe225a94
commit
11f640cfee
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user