mirror of
https://github.com/gotson/komga.git
synced 2026-05-08 21:00:16 +02:00
fix: incorrect book number after adding book in series
books with a changed number after a series sort will be refreshed for metadata closes #269
This commit is contained in:
parent
cbe714932b
commit
3b1eb368ca
1 changed files with 14 additions and 4 deletions
|
|
@ -3,6 +3,7 @@ package org.gotson.komga.domain.service
|
||||||
import mu.KotlinLogging
|
import mu.KotlinLogging
|
||||||
import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator
|
import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator
|
||||||
import org.apache.commons.lang3.StringUtils
|
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.Book
|
||||||
import org.gotson.komga.domain.model.BookMetadata
|
import org.gotson.komga.domain.model.BookMetadata
|
||||||
import org.gotson.komga.domain.model.Media
|
import org.gotson.komga.domain.model.Media
|
||||||
|
|
@ -34,7 +35,8 @@ class SeriesLifecycle(
|
||||||
private val seriesRepository: SeriesRepository,
|
private val seriesRepository: SeriesRepository,
|
||||||
private val thumbnailsSeriesRepository: ThumbnailSeriesRepository,
|
private val thumbnailsSeriesRepository: ThumbnailSeriesRepository,
|
||||||
private val seriesMetadataRepository: SeriesMetadataRepository,
|
private val seriesMetadataRepository: SeriesMetadataRepository,
|
||||||
private val collectionRepository: SeriesCollectionRepository
|
private val collectionRepository: SeriesCollectionRepository,
|
||||||
|
private val taskReceiver: TaskReceiver
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun sortBooks(series: Series) {
|
fun sortBooks(series: Series) {
|
||||||
|
|
@ -54,13 +56,21 @@ class SeriesLifecycle(
|
||||||
sorted.mapIndexed { index, (book, _) -> book.copy(number = index + 1) }
|
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
|
if (metadata.numberLock && metadata.numberSortLock) null
|
||||||
else metadata.copy(
|
else metadata to metadata.copy(
|
||||||
number = if (!metadata.numberLock) (index + 1).toString() else metadata.number,
|
number = if (!metadata.numberLock) (index + 1).toString() else metadata.number,
|
||||||
numberSort = if (!metadata.numberSortLock) (index + 1).toFloat() else metadata.numberSort
|
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>) {
|
fun addBooks(series: Series, booksToAdd: Collection<Book>) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue