Fixes
This commit is contained in:
@@ -47,7 +47,7 @@ class SingleMangaImporter @Inject constructor(
|
|||||||
val contentResolver = storageManager.contentResolver
|
val contentResolver = storageManager.contentResolver
|
||||||
val name = contentResolver.resolveName(uri) ?: throw IOException("Cannot fetch name from uri: $uri")
|
val name = contentResolver.resolveName(uri) ?: throw IOException("Cannot fetch name from uri: $uri")
|
||||||
if (!hasCbzExtension(name)) {
|
if (!hasCbzExtension(name)) {
|
||||||
throw UnsupportedFileException("Unsupported file on $uri")
|
throw UnsupportedFileException("Unsupported file $name on $uri")
|
||||||
}
|
}
|
||||||
val dest = File(getOutputDir(), name)
|
val dest = File(getOutputDir(), name)
|
||||||
runInterruptible {
|
runInterruptible {
|
||||||
|
|||||||
@@ -13,9 +13,14 @@ import org.koitharu.kotatsu.R
|
|||||||
import org.koitharu.kotatsu.core.ui.AlertDialogFragment
|
import org.koitharu.kotatsu.core.ui.AlertDialogFragment
|
||||||
import org.koitharu.kotatsu.core.util.ext.tryLaunch
|
import org.koitharu.kotatsu.core.util.ext.tryLaunch
|
||||||
import org.koitharu.kotatsu.databinding.DialogImportBinding
|
import org.koitharu.kotatsu.databinding.DialogImportBinding
|
||||||
|
import org.koitharu.kotatsu.local.data.LocalStorageManager
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
class ImportDialogFragment : AlertDialogFragment<DialogImportBinding>(), View.OnClickListener {
|
class ImportDialogFragment : AlertDialogFragment<DialogImportBinding>(), View.OnClickListener {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
lateinit var storageManager: LocalStorageManager
|
||||||
|
|
||||||
private val importFileCall = registerForActivityResult(ActivityResultContracts.OpenMultipleDocuments()) {
|
private val importFileCall = registerForActivityResult(ActivityResultContracts.OpenMultipleDocuments()) {
|
||||||
startImport(it)
|
startImport(it)
|
||||||
}
|
}
|
||||||
@@ -55,6 +60,9 @@ class ImportDialogFragment : AlertDialogFragment<DialogImportBinding>(), View.On
|
|||||||
if (uris.isEmpty()) {
|
if (uris.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
uris.forEach {
|
||||||
|
storageManager.takePermissions(it)
|
||||||
|
}
|
||||||
val ctx = requireContext()
|
val ctx = requireContext()
|
||||||
ImportWorker.start(ctx, uris)
|
ImportWorker.start(ctx, uris)
|
||||||
Toast.makeText(ctx, R.string.import_will_start_soon, Toast.LENGTH_LONG).show()
|
Toast.makeText(ctx, R.string.import_will_start_soon, Toast.LENGTH_LONG).show()
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ class PageLoader @Inject constructor(
|
|||||||
|
|
||||||
private suspend fun loadPageImpl(page: MangaPage, progress: MutableStateFlow<Float>): Uri = semaphore.withPermit {
|
private suspend fun loadPageImpl(page: MangaPage, progress: MutableStateFlow<Float>): Uri = semaphore.withPermit {
|
||||||
val pageUrl = getPageUrl(page)
|
val pageUrl = getPageUrl(page)
|
||||||
check(pageUrl.isNotBlank()) { "Cannot obtain full image url" }
|
check(pageUrl.isNotBlank()) { "Cannot obtain full image url for $page" }
|
||||||
val uri = Uri.parse(pageUrl)
|
val uri = Uri.parse(pageUrl)
|
||||||
return if (uri.isZipUri()) {
|
return if (uri.isZipUri()) {
|
||||||
if (uri.scheme == URI_SCHEME_ZIP) {
|
if (uri.scheme == URI_SCHEME_ZIP) {
|
||||||
|
|||||||
Reference in New Issue
Block a user