优化
This commit is contained in:
@@ -53,6 +53,9 @@ val Book.isOnLineTxt: Boolean
|
|||||||
return !isLocal && type and BookType.text > 0
|
return !isLocal && type and BookType.text > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val Book.isUpError: Boolean
|
||||||
|
get() = type and BookType.updateError > 0
|
||||||
|
|
||||||
fun Book.contains(word: String?): Boolean {
|
fun Book.contains(word: String?): Boolean {
|
||||||
if (word.isNullOrEmpty()) {
|
if (word.isNullOrEmpty()) {
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -12,10 +12,7 @@ import io.legado.app.data.entities.Book
|
|||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.help.AppWebDav
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.DefaultData
|
import io.legado.app.help.DefaultData
|
||||||
import io.legado.app.help.book.BookHelp
|
import io.legado.app.help.book.*
|
||||||
import io.legado.app.help.book.addType
|
|
||||||
import io.legado.app.help.book.isLocal
|
|
||||||
import io.legado.app.help.book.removeType
|
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.LocalConfig
|
import io.legado.app.help.config.LocalConfig
|
||||||
import io.legado.app.model.CacheBook
|
import io.legado.app.model.CacheBook
|
||||||
@@ -113,35 +110,42 @@ class MainViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
}
|
}
|
||||||
val source = appDb.bookSourceDao.getBookSource(book.origin)
|
val source = appDb.bookSourceDao.getBookSource(book.origin)
|
||||||
if (source == null) {
|
if (source == null) {
|
||||||
book.addType(BookType.updateError)
|
if (!book.isUpError) {
|
||||||
appDb.bookDao.update(book)
|
book.addType(BookType.updateError)
|
||||||
|
appDb.bookDao.update(book)
|
||||||
|
}
|
||||||
waitUpTocBooks.remove(book.bookUrl)
|
waitUpTocBooks.remove(book.bookUrl)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
waitUpTocBooks.remove(bookUrl)
|
waitUpTocBooks.remove(bookUrl)
|
||||||
upTocAdd(bookUrl)
|
upTocAdd(bookUrl)
|
||||||
execute(context = upTocPool) {
|
execute(context = upTocPool) {
|
||||||
val oldBook = book.copy()
|
kotlin.runCatching {
|
||||||
WebBook.runPreUpdateJs(source, book)
|
val oldBook = book.copy()
|
||||||
if (book.tocUrl.isBlank()) {
|
WebBook.runPreUpdateJs(source, book)
|
||||||
WebBook.getBookInfoAwait(source, book)
|
if (book.tocUrl.isBlank()) {
|
||||||
|
WebBook.getBookInfoAwait(source, book)
|
||||||
|
}
|
||||||
|
val toc = WebBook.getChapterListAwait(source, book).getOrThrow()
|
||||||
|
book.removeType(BookType.updateError)
|
||||||
|
if (book.bookUrl == bookUrl) {
|
||||||
|
appDb.bookDao.update(book)
|
||||||
|
} else {
|
||||||
|
upTocAdd(book.bookUrl)
|
||||||
|
appDb.bookDao.insert(book)
|
||||||
|
BookHelp.updateCacheFolder(oldBook, book)
|
||||||
|
}
|
||||||
|
appDb.bookChapterDao.delByBook(bookUrl)
|
||||||
|
appDb.bookChapterDao.insert(*toc.toTypedArray())
|
||||||
|
addDownload(source, book)
|
||||||
|
}.onFailure {
|
||||||
|
AppLog.put("${book.name} 更新目录失败\n${it.localizedMessage}", it)
|
||||||
|
//这里可能因为时间太长书籍信息已经更改,所以重新获取
|
||||||
|
appDb.bookDao.getBook(book.bookUrl)?.let { book ->
|
||||||
|
book.addType(BookType.updateError)
|
||||||
|
appDb.bookDao.update(book)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val toc = WebBook.getChapterListAwait(source, book).getOrThrow()
|
|
||||||
book.removeType(BookType.updateError)
|
|
||||||
if (book.bookUrl == bookUrl) {
|
|
||||||
appDb.bookDao.update(book)
|
|
||||||
} else {
|
|
||||||
upTocAdd(book.bookUrl)
|
|
||||||
appDb.bookDao.insert(book)
|
|
||||||
BookHelp.updateCacheFolder(oldBook, book)
|
|
||||||
}
|
|
||||||
appDb.bookChapterDao.delByBook(bookUrl)
|
|
||||||
appDb.bookChapterDao.insert(*toc.toTypedArray())
|
|
||||||
addDownload(source, book)
|
|
||||||
}.onError(upTocPool) {
|
|
||||||
book.addType(BookType.updateError)
|
|
||||||
appDb.bookDao.update(book)
|
|
||||||
AppLog.put("${book.name} 更新目录失败\n${it.localizedMessage}", it)
|
|
||||||
}.onCancel(upTocPool) {
|
}.onCancel(upTocPool) {
|
||||||
upTocCancel(bookUrl)
|
upTocCancel(bookUrl)
|
||||||
upTocCancel(book.bookUrl)
|
upTocCancel(book.bookUrl)
|
||||||
|
|||||||
Reference in New Issue
Block a user