From d48741fb529ab5b6a7e17c7928329bd78950498c Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 27 Aug 2019 15:42:11 +0800 Subject: [PATCH] up --- .../java/io/legado/app/data/dao/BookDao.kt | 3 ++ .../app/ui/readbook/ReadBookViewModel.kt | 54 ++++++++++--------- 2 files changed, 31 insertions(+), 26 deletions(-) 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 4f5401c4c..06874c7ec 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 @@ -30,6 +30,9 @@ interface BookDao { @Query("select * from books where bookUrl = :bookUrl") fun getBook(bookUrl: String): Book? + @Query("select * from books order by durChapterTime desc limit 1") + fun getLastReadBook(): Book? + @get:Query("SELECT bookUrl FROM books") val allBookUrls: List diff --git a/app/src/main/java/io/legado/app/ui/readbook/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/readbook/ReadBookViewModel.kt index c417a3fe6..c2e70a9ee 100644 --- a/app/src/main/java/io/legado/app/ui/readbook/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/readbook/ReadBookViewModel.kt @@ -36,35 +36,37 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { private val loadingLock = "loadingLock" fun initData(intent: Intent) { - inBookshelf = intent.getBooleanExtra("inBookshelf", true) - val bookUrl = intent.getStringExtra("bookUrl") - if (!bookUrl.isNullOrEmpty()) { - execute { - App.db.bookDao().getBook(bookUrl)?.let { book -> - durChapterIndex = book.durChapterIndex - durPageIndex = book.durChapterPos - isLocalBook = book.origin == BookType.local - bookData.postValue(book) - bookSource = App.db.bookSourceDao().getBookSource(book.origin) - bookSource?.let { - webBook = WebBook(it) - } - val count = App.db.bookChapterDao().getChapterCount(bookUrl) - if (count == 0) { - if (book.tocUrl.isEmpty()) { - loadBookInfo(book) - } else { - loadChapterList(book) - } + execute { + inBookshelf = intent.getBooleanExtra("inBookshelf", true) + val bookUrl = intent.getStringExtra("bookUrl") + val book = if (!bookUrl.isNullOrEmpty()) { + App.db.bookDao().getBook(bookUrl) + } else { + App.db.bookDao().getLastReadBook() + } + book?.let { + durChapterIndex = book.durChapterIndex + durPageIndex = book.durChapterPos + isLocalBook = book.origin == BookType.local + bookData.postValue(book) + bookSource = App.db.bookSourceDao().getBookSource(book.origin) + bookSource?.let { + webBook = WebBook(it) + } + val count = App.db.bookChapterDao().getChapterCount(bookUrl) + if (count == 0) { + if (book.tocUrl.isEmpty()) { + loadBookInfo(book) } else { - if (durChapterIndex > count - 1) { - durChapterIndex = count - 1 - } - chapterSize = count - chapterListFinish.postValue(true) + loadChapterList(book) + } + } else { + if (durChapterIndex > count - 1) { + durChapterIndex = count - 1 } + chapterSize = count + chapterListFinish.postValue(true) } - } } }