mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -14,7 +14,6 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookChapter
|
||||
import io.legado.app.data.entities.BookProgress
|
||||
import io.legado.app.data.entities.BookSource
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
@@ -93,7 +92,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
|
||||
if (ReadBook.durChapterIndex > ReadBook.chapterSize - 1) {
|
||||
ReadBook.durChapterIndex = ReadBook.chapterSize - 1
|
||||
}
|
||||
ReadBook.loadContent(resetPageOffset = isSameBook)
|
||||
ReadBook.loadContent(resetPageOffset = false)
|
||||
}
|
||||
if (!isSameBook || !BaseReadAloudService.isRun) {
|
||||
syncBookProgress(book)
|
||||
@@ -210,20 +209,11 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
|
||||
/**
|
||||
* 换源
|
||||
*/
|
||||
fun changeTo(source: BookSource, book: Book, toc: List<BookChapter>) {
|
||||
fun changeTo(book: Book, toc: List<BookChapter>) {
|
||||
changeSourceCoroutine?.cancel()
|
||||
changeSourceCoroutine = execute {
|
||||
ReadBook.upMsg(context.getString(R.string.loading))
|
||||
ReadBook.book?.changeTo(book, toc)
|
||||
val nextChapter = toc.getOrElse(book.durChapterIndex) {
|
||||
toc.first()
|
||||
}
|
||||
WebBook.getContentAwait(
|
||||
bookSource = source,
|
||||
book = book,
|
||||
bookChapter = toc[book.durChapterIndex],
|
||||
nextChapterUrl = nextChapter.url
|
||||
)
|
||||
appDb.bookDao.insert(book)
|
||||
appDb.bookChapterDao.insert(*toc.toTypedArray())
|
||||
ReadBook.resetData(book)
|
||||
@@ -250,11 +240,25 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
|
||||
WebBook.getBookInfoAwait(source, book)
|
||||
}
|
||||
val toc = WebBook.getChapterListAwait(source, book).getOrThrow()
|
||||
changeTo(source, book, toc)
|
||||
return@execute
|
||||
val chapter = toc.getOrElse(book.durChapterIndex) {
|
||||
toc.last()
|
||||
}
|
||||
val nextChapter = toc.getOrElse(chapter.index) {
|
||||
toc.first()
|
||||
}
|
||||
kotlin.runCatching {
|
||||
WebBook.getContentAwait(
|
||||
bookSource = source,
|
||||
book = book,
|
||||
bookChapter = chapter,
|
||||
nextChapterUrl = nextChapter.url
|
||||
)
|
||||
changeTo(book, toc)
|
||||
return@execute
|
||||
}
|
||||
}
|
||||
}
|
||||
throw NoStackTraceException("没有搜索到 ${name}(${author})")
|
||||
throw NoStackTraceException("没有合适书源")
|
||||
}.onStart {
|
||||
ReadBook.upMsg(context.getString(R.string.source_auto_changing))
|
||||
}.onError {
|
||||
|
||||
Reference in New Issue
Block a user