kunfei 4 سال پیش
والد
کامیت
d08c3c58d6
2فایلهای تغییر یافته به همراه5 افزوده شده و 17 حذف شده
  1. 3 0
      app/src/main/java/io/legado/app/data/dao/BookDao.kt
  2. 2 17
      app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

+ 3 - 0
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")
     @Query("select 1 from books where bookUrl = :bookUrl")
     fun has(bookUrl: String): Boolean?
     fun has(bookUrl: String): Boolean?
 
 
+    @Query("select 1 from books where bookUrl like '%' || :fileName")
+    fun hasFile(fileName: String): Boolean?
+
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     fun insert(vararg book: Book)
     fun insert(vararg book: Book)
 
 

+ 2 - 17
app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

@@ -108,9 +108,7 @@ object LocalBook {
         fileName: String,
         fileName: String,
         source: BaseSource? = null,
         source: BaseSource? = null,
     ): Book {
     ): Book {
-        return saveBookFile(str, fileName, source).let {
-            importFile(it)
-        }
+        return importFile(saveBookFile(str, fileName, source))
     }
     }
 
 
     /**
     /**
@@ -275,20 +273,7 @@ object LocalBook {
     fun isOnBookShelf(
     fun isOnBookShelf(
         fileName: String
         fileName: String
     ): Boolean {
     ): 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
     }
     }
 
 
     //文件类书源 合并在线书籍信息 在线 > 本地
     //文件类书源 合并在线书籍信息 在线 > 本地