diff --git a/app/src/main/kotlin/com/hippo/ehviewer/gallery/EhPageLoader.kt b/app/src/main/kotlin/com/hippo/ehviewer/gallery/EhPageLoader.kt index b29e3a2fc..37868faa9 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/gallery/EhPageLoader.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/gallery/EhPageLoader.kt @@ -45,8 +45,8 @@ class EhPageLoader(private val mGalleryInfo: GalleryInfo, startPage: Int) : EhUtils.getSuitableTitle(mGalleryInfo) } - override fun getImageExtension(index: Int): String { - return mSpiderQueen.getExtension(index)!! + override fun getImageExtension(index: Int): String? { + return mSpiderQueen.getExtension(index) } override fun save(index: Int, file: UniFile): Boolean { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/gallery/PageLoader2.kt b/app/src/main/kotlin/com/hippo/ehviewer/gallery/PageLoader2.kt index a767b086a..2b760c1e1 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/gallery/PageLoader2.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/gallery/PageLoader2.kt @@ -60,16 +60,15 @@ abstract class PageLoader2(private val gid: Long, var startPage: Int) : PageLoad protected abstract val title: String - protected abstract fun getImageExtension(index: Int): String + protected abstract fun getImageExtension(index: Int): String? - fun getImageFilename(index: Int): String { - return FileUtils.sanitizeFilename("$title - ${index + 1}.${getImageExtension(index).lowercase()}") + fun getImageFilename(index: Int): String? = getImageExtension(index)?.let { + FileUtils.sanitizeFilename("$title - ${index + 1}.${it.lowercase()}") } abstract fun save(index: Int, file: UniFile): Boolean - fun saveToDir(index: Int, dir: UniFile): UniFile? { - val filename = getImageFilename(index) - return (dir / filename).takeIf { save(index, it) } + fun saveToDir(index: Int, dir: UniFile): UniFile? = getImageFilename(index)?.let { filename -> + (dir / filename).takeIf { save(index, it) } } } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/PageActions.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/PageActions.kt index cecf6f1f1..f11f2dfb1 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/PageActions.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/PageActions.kt @@ -86,6 +86,10 @@ suspend fun save(page: ReaderPage) { val cannotSave = getString(R.string.error_cant_save_image) if (granted) { val filename = getImageFilename(page.index) + if (filename == null) { + showSnackbar(cannotSave) + return + } val extension = FileUtils.getExtensionFromFilename(filename) val mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension) ?: "image/jpeg" val values = ContentValues() @@ -133,6 +137,10 @@ suspend fun save(page: ReaderPage) { context(SnackbarHostState, Context, PageLoader2) suspend fun saveTo(page: ReaderPage) { val filename = getImageFilename(page.index) + if (filename == null) { + showSnackbar(getString(R.string.error_cant_save_image)) + return + } val extension = FileUtils.getExtensionFromFilename(filename) val mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension) ?: "image/jpeg" page.runSuspendCatching { diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 999033b55..7d7096060 100644 --- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -430,7 +430,7 @@ class ReaderActivity : EhActivity() { lifecycleScope.launchIO { val granted = isAtLeastQ || requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) if (granted) { - val filename = mGalleryProvider!!.getImageFilename(index) + val filename = mGalleryProvider!!.getImageFilename(index) ?: return@launchIO makeToast(R.string.error_cant_save_image) val extension = FileUtils.getExtensionFromFilename(filename) val mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension) ?: "image/jpeg" @@ -477,7 +477,7 @@ class ReaderActivity : EhActivity() { fun saveImageTo(index: Int) { lifecycleScope.launchIO { - val filename = mGalleryProvider?.getImageFilename(index) ?: return@launchIO + val filename = mGalleryProvider?.getImageFilename(index) ?: return@launchIO makeToast(R.string.error_cant_save_image) val extension = FileUtils.getExtensionFromFilename(filename) val mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension) ?: "image/jpeg" runSuspendCatching {