Przeglądaj źródła

fix: defaultToRead 始终跳转同一本书

lastReadBook 查询有过滤 type & BookType.text > 0,
漫画等非文本类型书籍不会被返回,导致始终跳转到很久以前读过的文本类书。

新增 mostRecentlyReadBook 查询(不限类型),initData / initReadBookConfig
改用它获取最近阅读的书籍。
HapeLee 5 miesięcy temu
rodzic
commit
2788d5e9d8

+ 3 - 0
app/src/main/java/io/legado/app/data/dao/BookDao.kt

@@ -648,6 +648,9 @@ interface BookDao {
     @get:Query("SELECT * FROM books where type & ${BookType.text} > 0 ORDER BY durChapterTime DESC limit 1")
     val lastReadBook: Book?
 
+    @get:Query("SELECT * FROM books ORDER BY durChapterTime DESC limit 1")
+    val mostRecentlyReadBook: Book?
+
     @get:Query("SELECT bookUrl FROM books")
     val allBookUrls: List<String>
 

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/manga/ReadMangaViewModel.kt

@@ -65,7 +65,7 @@ class ReadMangaViewModel(
             ReadManga.chapterChanged = intent.getBooleanExtra("chapterChanged", false)
             val bookUrl = intent.getStringExtra("bookUrl")
             val book = when {
-                bookUrl.isNullOrEmpty() -> appDb.bookDao.lastReadBook
+                bookUrl.isNullOrEmpty() -> appDb.bookDao.mostRecentlyReadBook
                 else -> appDb.bookDao.getBook(bookUrl)
             } ?: ReadManga.book
             when {

+ 2 - 2
app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt

@@ -1668,7 +1668,7 @@ class ReadBookViewModel(
     fun initReadBookConfig(intent: Intent) {
         val bookUrl = intent.getStringExtra("bookUrl")
         val book = when {
-            bookUrl.isNullOrEmpty() -> appDb.bookDao.lastReadBook
+            bookUrl.isNullOrEmpty() -> appDb.bookDao.mostRecentlyReadBook
             else -> appDb.bookDao.getBook(bookUrl)
         } ?: return
         ReadBook.upReadBookConfig(book)
@@ -1680,7 +1680,7 @@ class ReadBookViewModel(
             ReadBook.chapterChanged = intent.getBooleanExtra("chapterChanged", false)
             val bookUrl = intent.getStringExtra("bookUrl")
             val book = when {
-                bookUrl.isNullOrEmpty() -> appDb.bookDao.lastReadBook
+                bookUrl.isNullOrEmpty() -> appDb.bookDao.mostRecentlyReadBook
                 else -> appDb.bookDao.getBook(bookUrl)
             } ?: ReadBook.book
             when {