diff --git a/app/src/main/java/io/legado/app/api/controller/BookController.kt b/app/src/main/java/io/legado/app/api/controller/BookController.kt index daccc43a7..496b24ae2 100644 --- a/app/src/main/java/io/legado/app/api/controller/BookController.kt +++ b/app/src/main/java/io/legado/app/api/controller/BookController.kt @@ -6,9 +6,11 @@ import io.legado.app.constant.PreferKey import io.legado.app.data.appDb import io.legado.app.data.entities.Book import io.legado.app.help.BookHelp +import io.legado.app.help.ImageLoader import io.legado.app.model.localBook.LocalBook import io.legado.app.model.webBook.WebBook import io.legado.app.service.help.ReadBook +import io.legado.app.ui.widget.image.CoverImageView import io.legado.app.utils.GSON import io.legado.app.utils.cnCompare import io.legado.app.utils.fromJsonObject @@ -40,13 +42,23 @@ object BookController { } } + fun getCover(parameters: Map>): ReturnData { + val returnData = ReturnData() + val coverPath = parameters["path"]?.firstOrNull() + val ftBitmap = ImageLoader.loadBitmap(appCtx, coverPath) + .placeholder(CoverImageView.defaultDrawable) + .error(CoverImageView.defaultDrawable) + .submit() + return returnData.setData(ftBitmap.get()) + } + /** * 更新目录 */ fun refreshToc(parameters: Map>): ReturnData { val returnData = ReturnData() try { - val bookUrl = parameters["url"]?.getOrNull(0) + val bookUrl = parameters["url"]?.firstOrNull() if (bookUrl.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书籍地址") } @@ -90,7 +102,7 @@ object BookController { * 获取目录 */ fun getChapterList(parameters: Map>): ReturnData { - val bookUrl = parameters["url"]?.getOrNull(0) + val bookUrl = parameters["url"]?.firstOrNull() val returnData = ReturnData() if (bookUrl.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书籍地址") @@ -103,8 +115,8 @@ object BookController { * 获取正文 */ fun getBookContent(parameters: Map>): ReturnData { - val bookUrl = parameters["url"]?.getOrNull(0) - val index = parameters["index"]?.getOrNull(0)?.toInt() + val bookUrl = parameters["url"]?.firstOrNull() + val index = parameters["index"]?.firstOrNull()?.toInt() val returnData = ReturnData() if (bookUrl.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书籍地址") diff --git a/app/src/main/java/io/legado/app/api/controller/SourceController.kt b/app/src/main/java/io/legado/app/api/controller/SourceController.kt index 3972295e5..f4a92cd6d 100644 --- a/app/src/main/java/io/legado/app/api/controller/SourceController.kt +++ b/app/src/main/java/io/legado/app/api/controller/SourceController.kt @@ -59,7 +59,7 @@ object SourceController { } fun getSource(parameters: Map>): ReturnData { - val url = parameters["url"]?.getOrNull(0) + val url = parameters["url"]?.firstOrNull() val returnData = ReturnData() if (url.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书源地址") diff --git a/app/src/main/java/io/legado/app/help/ImageLoader.kt b/app/src/main/java/io/legado/app/help/ImageLoader.kt index cc702ff0f..fa2411d38 100644 --- a/app/src/main/java/io/legado/app/help/ImageLoader.kt +++ b/app/src/main/java/io/legado/app/help/ImageLoader.kt @@ -30,6 +30,19 @@ object ImageLoader { } } + fun loadBitmap(context: Context, path: String?): RequestBuilder { + return when { + path.isNullOrEmpty() -> Glide.with(context).asBitmap().load(path) + path.isAbsUrl() -> Glide.with(context).asBitmap().load(AnalyzeUrl(path).getGlideUrl()) + path.isContentScheme() -> Glide.with(context).asBitmap().load(Uri.parse(path)) + else -> kotlin.runCatching { + Glide.with(context).asBitmap().load(File(path)) + }.getOrElse { + Glide.with(context).asBitmap().load(path) + } + } + } + fun load(context: Context, @DrawableRes resId: Int?): RequestBuilder { return Glide.with(context).load(resId) } diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index 802b450c6..ab02185b1 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -285,7 +285,7 @@ interface JsExtensions { val zipFile = getFile(zipPath) val unzipFolder = FileUtils.createFolderIfNotExist(unzipPath) ZipUtils.unzipFile(zipFile, unzipFolder) - FileUtils.deleteFile(zipPath) + FileUtils.deleteFile(zipFile.absolutePath) return unzipPath.substring(FileUtils.getCachePath().length) } diff --git a/app/src/main/java/io/legado/app/web/HttpServer.kt b/app/src/main/java/io/legado/app/web/HttpServer.kt index 9b0d09e0e..687383179 100644 --- a/app/src/main/java/io/legado/app/web/HttpServer.kt +++ b/app/src/main/java/io/legado/app/web/HttpServer.kt @@ -51,6 +51,7 @@ class HttpServer(port: Int) : NanoHTTPD(port) { "/getChapterList" -> BookController.getChapterList(parameters) "/refreshToc" -> BookController.refreshToc(parameters) "/getBookContent" -> BookController.getBookContent(parameters) + "/cover" -> BookController.getCover(parameters) else -> null } }