This commit is contained in:
kunfei
2023-03-24 16:46:44 +08:00
parent 16f20b4873
commit 6cd211e1fa
@@ -4,6 +4,7 @@ import android.app.Application
import android.net.Uri
import androidx.lifecycle.MutableLiveData
import io.legado.app.constant.AppLog
import io.legado.app.constant.AppPattern
import io.legado.app.constant.AppPattern.bookFileRegex
import io.legado.app.model.localBook.LocalBook
import io.legado.app.utils.*
@@ -22,20 +23,13 @@ class FileAssociationViewModel(application: Application) : BaseAssociationViewMo
if (uri.isContentScheme() || uri.isFileScheme()) {
val fileDoc = FileDoc.fromUri(uri, false)
fileName = fileDoc.name
kotlin.runCatching {
if (uri.inputStream(context).getOrNull().isJson()) {
importJson(uri)
return@execute
if (fileName.matches(AppPattern.archiveFileRegex)) {
ArchiveUtils.deCompress(fileDoc).forEach {
dispatch(FileDoc.fromFile(it))
}
}.onFailure {
it.printOnDebug()
AppLog.put("尝试导入为JSON文件失败\n${it.localizedMessage}", it)
} else {
dispatch(fileDoc)
}
if (fileName.matches(bookFileRegex)) {
importBookLiveData.postValue(uri)
return@execute
}
notSupportedLiveData.postValue(Pair(uri, fileName))
} else {
onLineImportLive.postValue(uri)
}
@@ -46,6 +40,23 @@ class FileAssociationViewModel(application: Application) : BaseAssociationViewMo
}
}
fun dispatch(fileDoc: FileDoc) {
kotlin.runCatching {
if (fileDoc.openInputStream().getOrNull().isJson()) {
importJson(fileDoc.uri)
return
}
}.onFailure {
it.printOnDebug()
AppLog.put("尝试导入为JSON文件失败\n${it.localizedMessage}", it)
}
if (fileDoc.name.matches(bookFileRegex)) {
importBookLiveData.postValue(fileDoc.uri)
return
}
notSupportedLiveData.postValue(Pair(fileDoc.uri, fileDoc.name))
}
fun importBook(uri: Uri) {
val book = LocalBook.importFile(uri)
openBookLiveData.postValue(book.bookUrl)