From 8ee0dd993015cacb5fb9c9e5a45be37577491fc6 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 3 Apr 2022 10:59:47 +0300 Subject: [PATCH] Fix local pages uri --- .../local/domain/LocalMangaRepository.kt | 21 +++++++------------ .../kotatsu/reader/ui/ReaderActivity.kt | 4 +++- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt index d857fcbe4..c6137a485 100644 --- a/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt @@ -106,8 +106,7 @@ class LocalMangaRepository(private val storageManager: LocalStorageManager) : Ma url = fileUri, coverUrl = zipUri( file, - entryName = index.getCoverEntry() - ?: findFirstEntry(zip.entries(), isImage = true)?.name.orEmpty() + entryName = index.getCoverEntry() ?: findFirstImageEntry(zip.entries())?.name.orEmpty() ), chapters = info.chapters?.map { c -> c.copy(url = fileUri, source = MangaSource.LOCAL) @@ -129,7 +128,7 @@ class LocalMangaRepository(private val storageManager: LocalStorageManager) : Ma url = fileUri, publicUrl = fileUri, source = MangaSource.LOCAL, - coverUrl = zipUri(file, findFirstEntry(zip.entries(), isImage = true)?.name.orEmpty()), + coverUrl = zipUri(file, findFirstImageEntry(zip.entries())?.name.orEmpty()), chapters = chapters.sortedWith(AlphanumComparator()).mapIndexed { i, s -> MangaChapter( id = "$i$s".longHashCode(), @@ -188,20 +187,16 @@ class LocalMangaRepository(private val storageManager: LocalStorageManager) : Ma } } - private fun zipUri(file: File, entryName: String) = Uri.fromParts("cbz", file.path, entryName).toString() + private fun zipUri(file: File, entryName: String) = "cbz://${file.path}#$entryName" - private fun findFirstEntry(entries: Enumeration, isImage: Boolean): ZipEntry? { + private fun findFirstImageEntry(entries: Enumeration): ZipEntry? { val list = entries.toList() .filterNot { it.isDirectory } .sortedWith(compareBy(AlphanumComparator()) { x -> x.name }) - return if (isImage) { - val map = MimeTypeMap.getSingleton() - list.firstOrNull { - map.getMimeTypeFromExtension(it.name.substringAfterLast('.')) - ?.startsWith("image/") == true - } - } else { - list.firstOrNull() + val map = MimeTypeMap.getSingleton() + return list.firstOrNull { + map.getMimeTypeFromExtension(it.name.substringAfterLast('.')) + ?.startsWith("image/") == true } } diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt index 02e799739..0c18d24ab 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt @@ -186,7 +186,9 @@ class ReaderActivity : R.id.action_save_page -> { viewModel.getCurrentPage()?.also { page -> viewModel.saveCurrentState(reader?.getCurrentState()) - val name = page.url.toUri().lastPathSegment + val name = page.url.toUri().run { + fragment ?: lastPathSegment ?: "" + } savePageRequest.launch(name) } ?: showWaitWhileLoading() }