fix: keep user uploaded thumbnail when importing a book with upgrade

This commit is contained in:
Gauthier Roebroeck 2024-11-18 11:14:20 +08:00
parent 812f82207a
commit b7b74c8b50
2 changed files with 18 additions and 0 deletions

View file

@ -11,6 +11,7 @@ import org.gotson.komga.domain.model.Media
import org.gotson.komga.domain.model.PathContainedInPath
import org.gotson.komga.domain.model.Series
import org.gotson.komga.domain.model.Sidecar
import org.gotson.komga.domain.model.ThumbnailBook
import org.gotson.komga.domain.model.withCode
import org.gotson.komga.domain.persistence.BookMetadataRepository
import org.gotson.komga.domain.persistence.BookRepository
@ -20,6 +21,7 @@ import org.gotson.komga.domain.persistence.MediaRepository
import org.gotson.komga.domain.persistence.ReadListRepository
import org.gotson.komga.domain.persistence.ReadProgressRepository
import org.gotson.komga.domain.persistence.SidecarRepository
import org.gotson.komga.domain.persistence.ThumbnailBookRepository
import org.gotson.komga.language.toIndexedMap
import org.springframework.context.ApplicationEventPublisher
import org.springframework.stereotype.Service
@ -52,6 +54,7 @@ class BookImporter(
private val bookRepository: BookRepository,
private val mediaRepository: MediaRepository,
private val metadataRepository: BookMetadataRepository,
private val thumbnailBookRepository: ThumbnailBookRepository,
private val readProgressRepository: ReadProgressRepository,
private val readListRepository: ReadListRepository,
private val libraryRepository: LibraryRepository,
@ -191,6 +194,11 @@ class BookImporter(
metadataRepository.update(it.copy(bookId = importedBook.id))
}
// copy user uploaded thumbnails
thumbnailBookRepository.findAllByBookIdAndType(bookToUpgrade.id, setOf(ThumbnailBook.Type.USER_UPLOADED)).forEach { deleted ->
thumbnailBookRepository.update(deleted.copy(bookId = importedBook.id))
}
// copy read progress
readProgressRepository.findAllByBookId(bookToUpgrade.id)
.map { it.copy(bookId = importedBook.id) }

View file

@ -13,10 +13,13 @@ import org.gotson.komga.application.tasks.TaskEmitter
import org.gotson.komga.domain.model.Book
import org.gotson.komga.domain.model.BookPage
import org.gotson.komga.domain.model.CopyMode
import org.gotson.komga.domain.model.Dimension
import org.gotson.komga.domain.model.KomgaUser
import org.gotson.komga.domain.model.MarkSelectedPreference
import org.gotson.komga.domain.model.Media
import org.gotson.komga.domain.model.PathContainedInPath
import org.gotson.komga.domain.model.ReadList
import org.gotson.komga.domain.model.ThumbnailBook
import org.gotson.komga.domain.model.makeBook
import org.gotson.komga.domain.model.makeLibrary
import org.gotson.komga.domain.model.makeSeries
@ -372,6 +375,8 @@ class BookImporterTest(
)
}
bookLifecycle.addThumbnailForBook(ThumbnailBook(ByteArray(10), type = ThumbnailBook.Type.USER_UPLOADED, mediaType = "image/jpeg", fileSize = 10L, dimension = Dimension(1, 1), bookId = bookToUpgrade.id), MarkSelectedPreference.YES)
// when
bookImporter.importBook(sourceFile, series, CopyMode.MOVE, upgradeBookId = bookToUpgrade.id)
@ -395,6 +400,11 @@ class BookImporterTest(
assertThat(numberSortLock).isTrue
}
val thumbnail = bookLifecycle.getThumbnail(books[2].id)
assertThat(thumbnail).isNotNull
assertThat(thumbnail!!.type).isEqualTo(ThumbnailBook.Type.USER_UPLOADED)
assertThat(thumbnail.fileSize).isEqualTo(10L)
assertThat(sourceFile).doesNotExist()
}
}