diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/BookImporter.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/BookImporter.kt index ea01ef6c..51ba2c80 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/BookImporter.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/BookImporter.kt @@ -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) } diff --git a/komga/src/test/kotlin/org/gotson/komga/domain/service/BookImporterTest.kt b/komga/src/test/kotlin/org/gotson/komga/domain/service/BookImporterTest.kt index 88d07b95..f2ff8ac7 100644 --- a/komga/src/test/kotlin/org/gotson/komga/domain/service/BookImporterTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/domain/service/BookImporterTest.kt @@ -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() } }