Fix crash when saving unloaded images

This commit is contained in:
FooIbar committed 2024-05-09 14:23:11 +08:00
1 parent d5d8a828ef
commit 645ebddd4f
4 files changed
+17 -10

No files matched your search

@@ -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 {
@@ -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) }
}
}
@@ -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 {
@@ -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 {