From 739833ed4499518b371864b9a81aa0bf9ff037d2 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:28:59 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Fix=20cannot=20add=20bo?= =?UTF-8?q?oks=20without=20cover=20in=20EPUB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix, cannot add books that do not contain cover image in them. Problem was caused by returning function with null before getting to return parsed book. --- .../book_story/data/parser/epub/EpubFileParser.kt | 14 ++++++-------- .../book_story/data/parser/epub/EpubTextParser.kt | 7 ++++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubFileParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubFileParser.kt index 8d2d5201..753a8f50 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubFileParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubFileParser.kt @@ -61,12 +61,6 @@ class EpubFileParser @Inject constructor() : FileParser { .firstOrNull()?.attr("href") } - if (coverImagePath == null) { - return@withContext - } - - val coverImage = extractCoverImageBitmap(file, coverImagePath) - book = Book( title = title, author = author, @@ -79,7 +73,7 @@ class EpubFileParser @Inject constructor() : FileParser { lastOpened = null, category = Category.entries[0], coverImage = null - ) to coverImage + ) to extractCoverImageBitmap(file, coverImagePath) } } return book @@ -90,7 +84,11 @@ class EpubFileParser @Inject constructor() : FileParser { } } -private fun extractCoverImageBitmap(file: File, coverImagePath: String): Bitmap? { +private fun extractCoverImageBitmap(file: File, coverImagePath: String?): Bitmap? { + if (coverImagePath.isNullOrBlank()) { + return null + } + ZipFile(file).use { zip -> zip.entries().asSequence().forEach { entry -> if (entry.name.endsWith(coverImagePath)) { diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt index 3f8290d2..992f1efa 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt @@ -37,12 +37,13 @@ class EpubTextParser @Inject constructor() : TextParser { } val document = Jsoup.parse(content) + document.select("p").append("\n") document .wholeText() .lines() - .forEach { element -> - if (element.isNotBlank()) { - lines.add(element.trim()) + .forEach { line -> + if (line.isNotBlank()) { + lines.add(line.trim()) } } }