压缩文件和远程文件自动恢复

This commit is contained in:
Xwite
2023-03-17 18:04:10 +08:00
parent a2ecd70f2c
commit b7b7c3324d
2 changed files with 25 additions and 12 deletions

View File

@@ -58,6 +58,14 @@ val Book.isUpError: Boolean
val Book.isArchive: Boolean
get() = isType(BookType.archive)
val Book.archiveName: String
get() {
if (!isArchive) throw NoStackTraceException("Book is not deCompressed from archive")
// local_book::archive.rar
// webDav::https://...../archive.rar
return origin.substringAfter("::").substringAfterLast("/")
}
fun Book.contains(word: String?): Boolean {
if (word.isNullOrEmpty()) {
return true
@@ -132,13 +140,12 @@ fun Book.getLocalUri(): Uri {
return uri
}
fun Book.getArchiveUri(): Uri? {
val defaultBookDir = AppConfig.defaultBookTreeUri
return if (isArchive && !defaultBookDir.isNullOrBlank()) {
// local_book::archive.rar
// webDav::https://...../archive.rar
val archiveFileName = origin.substringAfter("::").substringAfterLast("/")
FileDoc.fromUri(Uri.parse(defaultBookDir), true).find(archiveFileName)?.uri
FileDoc.fromUri(Uri.parse(defaultBookDir), true)
.find(archiveName)?.uri
} else {
null
}

View File

@@ -399,16 +399,22 @@ object LocalBook {
AppWebDav.authorization?.let { WebDav(webDavUrl, it) }
?: throw WebDavException("Unexpected defaultBookWebDav")
}
val fileUri = runBlocking {
saveBookFile(webdav.downloadInputStream(), localBook.originName)
val InputStream = runBlocking {
webdav.downloadInputStream()
}
if (localBook.isArchive) {
importArchiveFile(fileUri, localBook.originName) {
it.contains(localBook.originName)
InputStream.use {
if (localBook.isArchive) {
// 压缩包
val fileUri = saveBookFile(it, localBook.archiveName)
importArchiveFile(fileUri, localBook.originName) {
it.contains(localBook.originName)
}
} else {
// txt epub pdf umd
val fileUri = saveBookFile(it, localBook.originName)
localBook.bookUrl = FileDoc.fromUri(fileUri, false).toString()
localBook.save()
}
} else {
localBook.bookUrl = FileDoc.fromUri(fileUr, false).toString()
localBook.save()
}
} catch (e: Exception) {
e.printOnDebug()