From 020df5c1f7f5052d3d8e5bb1d10a81e6c37daea0 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 30 Jul 2022 14:10:18 +0300 Subject: [PATCH] Fix saving pages from cbz --- .../org/koitharu/kotatsu/reader/ReaderModule.kt | 4 ++-- .../koitharu/kotatsu/reader/ui/PageSaveHelper.kt | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ReaderModule.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ReaderModule.kt index 5b8faf203..a3fb71bdb 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ReaderModule.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ReaderModule.kt @@ -14,7 +14,7 @@ val readerModule factory { MangaDataRepository(get()) } single { PagesCache(get()) } - factory { PageSaveHelper(get(), androidContext()) } + factory { PageSaveHelper(androidContext()) } viewModel { params -> ReaderViewModel( @@ -25,7 +25,7 @@ val readerModule historyRepository = get(), settings = get(), pageSaveHelper = get(), - bookmarksRepository = get(), + bookmarksRepository = get() ) } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/PageSaveHelper.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/PageSaveHelper.kt index 3e19c7036..e021723af 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/PageSaveHelper.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/PageSaveHelper.kt @@ -4,6 +4,10 @@ import android.content.Context import android.net.Uri import android.webkit.MimeTypeMap import androidx.activity.result.ActivityResultLauncher +import androidx.core.net.toUri +import java.io.File +import kotlin.coroutines.Continuation +import kotlin.coroutines.resume import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runInterruptible import kotlinx.coroutines.suspendCancellableCoroutine @@ -11,19 +15,14 @@ import kotlinx.coroutines.withContext import okhttp3.HttpUrl.Companion.toHttpUrl import okio.IOException import org.koitharu.kotatsu.base.domain.MangaUtils -import org.koitharu.kotatsu.local.data.PagesCache import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.util.toFileNameSafe import org.koitharu.kotatsu.reader.domain.PageLoader -import java.io.File -import kotlin.coroutines.Continuation -import kotlin.coroutines.resume private const val MAX_FILENAME_LENGTH = 10 private const val EXTENSION_FALLBACK = "png" class PageSaveHelper( - private val cache: PagesCache, context: Context, ) { @@ -61,7 +60,11 @@ class PageSaveHelper( } != null private suspend fun getProposedFileName(url: String, file: File): String { - var name = url.toHttpUrl().pathSegments.last() + var name = if (url.startsWith("cbz://")) { + requireNotNull(url.toUri().fragment) + } else { + url.toHttpUrl().pathSegments.last() + } var extension = name.substringAfterLast('.', "") name = name.substringBeforeLast('.') if (extension.length !in 2..4) {