diff --git a/app/src/main/java/io/legado/app/data/dao/BookDao.kt b/app/src/main/java/io/legado/app/data/dao/BookDao.kt index dc904794a..513c47ee1 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookDao.kt @@ -88,6 +88,9 @@ interface BookDao { @Query("select 1 from books where bookUrl = :bookUrl") fun has(bookUrl: String): Boolean? + @Query("select 1 from books where bookUrl like '%' || :fileName") + fun hasFile(fileName: String): Boolean? + @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(vararg book: Book) diff --git a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt index b53d1cb32..4fda21143 100644 --- a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt +++ b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt @@ -108,9 +108,7 @@ object LocalBook { fileName: String, source: BaseSource? = null, ): Book { - return saveBookFile(str, fileName, source).let { - importFile(it) - } + return importFile(saveBookFile(str, fileName, source)) } /** @@ -275,20 +273,7 @@ object LocalBook { fun isOnBookShelf( fileName: String ): Boolean { - val defaultBookTreeUri = AppConfig.defaultBookTreeUri - if (defaultBookTreeUri.isNullOrBlank()) throw NoStackTraceException("没有设置书籍保存位置!") - val treeUri = Uri.parse(defaultBookTreeUri) - val bookUrl = if (treeUri.isContentScheme()) { - val treeDoc = DocumentFile.fromTreeUri(appCtx, treeUri) - val doc = treeDoc!!.findFile(fileName) ?: return false - doc.uri.toString() - } else { - val treeFile = File(treeUri.path!!) - val file = treeFile.getFile(fileName) - if (!file.exists()) return false - file.absolutePath - } - return appDb.bookDao.getBook(bookUrl) != null + return appDb.bookDao.hasFile(fileName) == true } //文件类书源 合并在线书籍信息 在线 > 本地