pull/32/head
kunfei 5 years ago
parent e2582c9452
commit d48741fb52
  1. 3
      app/src/main/java/io/legado/app/data/dao/BookDao.kt
  2. 54
      app/src/main/java/io/legado/app/ui/readbook/ReadBookViewModel.kt

@ -30,6 +30,9 @@ interface BookDao {
@Query("select * from books where bookUrl = :bookUrl") @Query("select * from books where bookUrl = :bookUrl")
fun getBook(bookUrl: String): Book? fun getBook(bookUrl: String): Book?
@Query("select * from books order by durChapterTime desc limit 1")
fun getLastReadBook(): Book?
@get:Query("SELECT bookUrl FROM books") @get:Query("SELECT bookUrl FROM books")
val allBookUrls: List<String> val allBookUrls: List<String>

@ -36,35 +36,37 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
private val loadingLock = "loadingLock" private val loadingLock = "loadingLock"
fun initData(intent: Intent) { fun initData(intent: Intent) {
inBookshelf = intent.getBooleanExtra("inBookshelf", true) execute {
val bookUrl = intent.getStringExtra("bookUrl") inBookshelf = intent.getBooleanExtra("inBookshelf", true)
if (!bookUrl.isNullOrEmpty()) { val bookUrl = intent.getStringExtra("bookUrl")
execute { val book = if (!bookUrl.isNullOrEmpty()) {
App.db.bookDao().getBook(bookUrl)?.let { book -> App.db.bookDao().getBook(bookUrl)
durChapterIndex = book.durChapterIndex } else {
durPageIndex = book.durChapterPos App.db.bookDao().getLastReadBook()
isLocalBook = book.origin == BookType.local }
bookData.postValue(book) book?.let {
bookSource = App.db.bookSourceDao().getBookSource(book.origin) durChapterIndex = book.durChapterIndex
bookSource?.let { durPageIndex = book.durChapterPos
webBook = WebBook(it) isLocalBook = book.origin == BookType.local
} bookData.postValue(book)
val count = App.db.bookChapterDao().getChapterCount(bookUrl) bookSource = App.db.bookSourceDao().getBookSource(book.origin)
if (count == 0) { bookSource?.let {
if (book.tocUrl.isEmpty()) { webBook = WebBook(it)
loadBookInfo(book) }
} else { val count = App.db.bookChapterDao().getChapterCount(bookUrl)
loadChapterList(book) if (count == 0) {
} if (book.tocUrl.isEmpty()) {
loadBookInfo(book)
} else { } else {
if (durChapterIndex > count - 1) { loadChapterList(book)
durChapterIndex = count - 1 }
} } else {
chapterSize = count if (durChapterIndex > count - 1) {
chapterListFinish.postValue(true) durChapterIndex = count - 1
} }
chapterSize = count
chapterListFinish.postValue(true)
} }
} }
} }
} }

Loading…
Cancel
Save