This commit is contained in:
kunfei
2022-10-15 11:17:58 +08:00
parent 7ff2132bb9
commit 5b0a580fc6
2 changed files with 36 additions and 33 deletions
@@ -46,22 +46,19 @@ class ImportBookActivity : BaseImportBookActivity<ActivityImportBookBinding, Imp
private val selectFolder = registerForActivityResult(HandleFileContract()) {
it.uri?.let { uri ->
if (uri.isContentScheme()) {
AppConfig.importBookPath = uri.toString()
initRootDoc(true)
} else {
AppConfig.importBookPath = uri.path
initRootDoc(true)
}
}
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
binding.titleBar.setTitle(R.string.book_local)
launch {
setBookStorage()
initView()
initEvent()
if (setBookStorage() && AppConfig.importBookPath.isNullOrBlank()) {
AppConfig.importBookPath = AppConfig.defaultBookTreeUri
}
initData()
}
}
@@ -150,15 +147,21 @@ class ImportBookActivity : BaseImportBookActivity<ActivityImportBookBinding, Imp
}
private fun initRootDoc(changedFolder: Boolean = false) {
if (viewModel.rootDoc != null && !changedFolder) {
upPath()
} else {
val lastPath = AppConfig.importBookPath
when {
viewModel.rootDoc != null && !changedFolder -> upPath()
lastPath.isNullOrEmpty() -> {
if (lastPath.isNullOrBlank()) {
binding.tvEmptyMsg.visible()
selectFolder.launch()
} else {
val rootUri = if (lastPath.isUri()) {
Uri.parse(lastPath)
} else {
Uri.fromFile(File(lastPath))
}
lastPath.isContentScheme() -> {
val rootUri = Uri.parse(lastPath)
when {
rootUri.isContentScheme() -> {
kotlin.runCatching {
val doc = DocumentFile.fromTreeUri(this, rootUri)
if (doc == null || doc.name.isNullOrEmpty()) {
@@ -178,7 +181,9 @@ class ImportBookActivity : BaseImportBookActivity<ActivityImportBookBinding, Imp
binding.tvEmptyMsg.visible()
selectFolder.launch()
}
else -> initRootPath(lastPath)
else -> initRootPath(rootUri.path!!)
}
}
}
}
@@ -17,9 +17,7 @@ fun String?.isContentScheme(): Boolean = this?.startsWith("content://") == true
fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this)
fun String.parseToUri(): Uri {
return if (isContentScheme()) {
Uri.parse(this)
} else {
return if (isUri()) Uri.parse(this) else {
Uri.fromFile(File(this))
}
}