From ea06eb5d85ad4e224d824d23e431b919c4b025d1 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 8 Jun 2022 15:56:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/remote/RemoteBookActivity.kt | 2 +- .../book/remote/manager/RemoteBookWebDav.kt | 182 ++---------------- 2 files changed, 14 insertions(+), 170 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt index cd2319c55..92bf8c532 100644 --- a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt @@ -27,6 +27,7 @@ class RemoteBookActivity : VMBaseActivity() private val adapter by lazy { RemoteBookAdapter(this, this) } + private val waitDialog by lazy { WaitDialog(this) } override fun onActivityCreated(savedInstanceState: Bundle?) { initView() @@ -51,7 +52,6 @@ class RemoteBookActivity : VMBaseActivity - LocalBook.saveBookFile(bytes, remoteBook.filename) - } + return AppWebDav.authorization?.let { + val webdav = WebDav(remoteBook.urlName, it) + webdav.download().let { bytes -> + LocalBook.saveBookFile(bytes, remoteBook.filename) } - }.onFailure { - throw it - }.getOrNull() + } } /** @@ -118,19 +111,15 @@ object RemoteBookWebDav : RemoteBookManager() { val localBookName = localBookUri.path?.substringAfterLast(File.separator) val putUrl = "${remoteBookUrl}${File.separator}${localBookName}" - kotlin.runCatching { - AppWebDav.authorization?.let { - if (localBookUri.isContentScheme()) { - WebDav(putUrl, it).upload( - byteArray = localBookUri.readBytes(appCtx), - contentType = "application/octet-stream" - ) - } else { - WebDav(putUrl, it).upload(localBookUri.path!!) - } + AppWebDav.authorization?.let { + if (localBookUri.isContentScheme()) { + WebDav(putUrl, it).upload( + byteArray = localBookUri.readBytes(appCtx), + contentType = "application/octet-stream" + ) + } else { + WebDav(putUrl, it).upload(localBookUri.path!!) } - }.onFailure { - throw it } return true } @@ -139,149 +128,4 @@ object RemoteBookWebDav : RemoteBookManager() { TODO("Not yet implemented") } -// suspend fun showRestoreDialog(context: Context) { -// val names = withContext(Dispatchers.IO) { getBackupNames() } -// if (names.isNotEmpty()) { -// withContext(Dispatchers.Main) { -// context.selector( -// title = context.getString(R.string.select_restore_file), -// items = names -// ) { _, index -> -// if (index in 0 until names.size) { -// Coroutine.async { -// restoreWebDav(names[index]) -// }.onError { -// appCtx.toastOnUi("WebDav恢复出错\n${it.localizedMessage}") -// } -// } -// } -// } -// } else { -// throw NoStackTraceException("Web dav no back up file") -// } -// } -// -// @Throws(WebDavException::class) -// suspend fun restoreWebDav(name: String) { -// authorization?.let { -// val webDav = WebDav(rootWebDavUrl + name, it) -// webDav.downloadTo(zipFilePath, true) -// @Suppress("BlockingMethodInNonBlockingContext") -// ZipUtils.unzipFile(zipFilePath, Backup.backupPath) -// Restore.restoreDatabase() -// Restore.restoreConfig() -// } -// } -// -// suspend fun hasBackUp(): Boolean { -// authorization?.let { -// val url = "${rootWebDavUrl}${backupFileName}" -// return WebDav(url, it).exists() -// } -// return false -// } -// -// suspend fun lastBackUp(): Result { -// return kotlin.runCatching { -// authorization?.let { -// var lastBackupFile: WebDavFile? = null -// WebDav(rootWebDavUrl, it).listFiles().reversed().forEach { webDavFile -> -// if (webDavFile.displayName.startsWith("backup")) { -// if (lastBackupFile == null -// || webDavFile.lastModify > lastBackupFile!!.lastModify -// ) { -// lastBackupFile = webDavFile -// } -// } -// } -// lastBackupFile -// } -// } -// } -// -// @Throws(Exception::class) -// suspend fun backUpWebDav(path: String) { -// if (!NetworkUtils.isAvailable()) return -// authorization?.let { -// val paths = arrayListOf(*Backup.backupFileNames) -// for (i in 0 until paths.size) { -// paths[i] = path + File.separator + paths[i] -// } -// FileUtils.delete(zipFilePath) -// if (ZipUtils.zipFiles(paths, zipFilePath)) { -// val putUrl = "${rootWebDavUrl}${backupFileName}" -// WebDav(putUrl, it).upload(zipFilePath) -// } -// } -// } -// -// suspend fun exportWebDav(byteArray: ByteArray, fileName: String) { -// if (!NetworkUtils.isAvailable()) return -// try { -// authorization?.let { -// // 如果导出的本地文件存在,开始上传 -// val putUrl = exportsWebDavUrl + fileName -// WebDav(putUrl, it).upload(byteArray, "text/plain") -// } -// } catch (e: Exception) { -// val msg = "WebDav导出\n${e.localizedMessage}" -// AppLog.put(msg) -// appCtx.toastOnUi(msg) -// } -// } -// -// fun uploadBookProgress(book: Book) { -// val authorization = authorization ?: return -// if (!syncBookProgress) return -// if (!NetworkUtils.isAvailable()) return -// Coroutine.async { -// val bookProgress = BookProgress(book) -// val json = GSON.toJson(bookProgress) -// val url = getProgressUrl(book) -// WebDav(url, authorization).upload(json.toByteArray(), "application/json") -// }.onError { -// AppLog.put("上传进度失败\n${it.localizedMessage}") -// } -// } -// -// private fun getProgressUrl(book: Book): String { -// return bookProgressUrl + book.name + "_" + book.author + ".json" -// } -// -// /** -// * 获取书籍进度 -// */ -// suspend fun getBookProgress(book: Book): BookProgress? { -// authorization?.let { -// val url = getProgressUrl(book) -// kotlin.runCatching { -// WebDav(url, it).download().let { byteArray -> -// val json = String(byteArray) -// if (json.isJson()) { -// return GSON.fromJsonObject(json).getOrNull() -// } -// } -// } -// } -// return null -// } -// -// suspend fun downloadAllBookProgress() { -// authorization ?: return -// if (!NetworkUtils.isAvailable()) return -// appDb.bookDao.all.forEach { book -> -// getBookProgress(book)?.let { bookProgress -> -// if (bookProgress.durChapterIndex > book.durChapterIndex -// || (bookProgress.durChapterIndex == book.durChapterIndex -// && bookProgress.durChapterPos > book.durChapterPos) -// ) { -// book.durChapterIndex = bookProgress.durChapterIndex -// book.durChapterPos = bookProgress.durChapterPos -// book.durChapterTitle = bookProgress.durChapterTitle -// book.durChapterTime = bookProgress.durChapterTime -// appDb.bookDao.update(book) -// } -// } -// } -// } } \ No newline at end of file