Skip to content

Commit

Permalink
fix: incorrect book number after adding book in series
Browse files Browse the repository at this point in the history
books with a changed number after a series sort will be refreshed for metadata

closes gotson#269
  • Loading branch information
gotson committed Aug 14, 2020
1 parent cbe7149 commit 3b1eb36
Showing 1 changed file with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package org.gotson.komga.domain.service
import mu.KotlinLogging
import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator
import org.apache.commons.lang3.StringUtils
import org.gotson.komga.application.tasks.TaskReceiver
import org.gotson.komga.domain.model.Book
import org.gotson.komga.domain.model.BookMetadata
import org.gotson.komga.domain.model.Media
Expand Down Expand Up @@ -34,7 +35,8 @@ class SeriesLifecycle(
private val seriesRepository: SeriesRepository,
private val thumbnailsSeriesRepository: ThumbnailSeriesRepository,
private val seriesMetadataRepository: SeriesMetadataRepository,
private val collectionRepository: SeriesCollectionRepository
private val collectionRepository: SeriesCollectionRepository,
private val taskReceiver: TaskReceiver
) {

fun sortBooks(series: Series) {
Expand All @@ -54,13 +56,21 @@ class SeriesLifecycle(
sorted.mapIndexed { index, (book, _) -> book.copy(number = index + 1) }
)

sorted.mapIndexedNotNull { index, (_, metadata) ->
val oldToNew = sorted.mapIndexedNotNull { index, (_, metadata) ->
if (metadata.numberLock && metadata.numberSortLock) null
else metadata.copy(
else metadata to metadata.copy(
number = if (!metadata.numberLock) (index + 1).toString() else metadata.number,
numberSort = if (!metadata.numberSortLock) (index + 1).toFloat() else metadata.numberSort
)
}.let { bookMetadataRepository.updateMany(it) }
}
bookMetadataRepository.updateMany(oldToNew.map { it.second })

oldToNew.forEach { (old, new) ->
if (old.number != new.number || old.numberSort != new.numberSort) {
logger.debug { "Metadata numbering has changed, refreshing metadata for book ${new.bookId} " }
taskReceiver.refreshBookMetadata(new.bookId)
}
}
}

fun addBooks(series: Series, booksToAdd: Collection<Book>) {
Expand Down

0 comments on commit 3b1eb36

Please sign in to comment.