|
|
|
@ -12,10 +12,7 @@ import io.legado.app.data.entities.Book |
|
|
|
|
import io.legado.app.data.entities.BookSource |
|
|
|
|
import io.legado.app.help.AppWebDav |
|
|
|
|
import io.legado.app.help.DefaultData |
|
|
|
|
import io.legado.app.help.book.BookHelp |
|
|
|
|
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.book.* |
|
|
|
|
import io.legado.app.help.config.AppConfig |
|
|
|
|
import io.legado.app.help.config.LocalConfig |
|
|
|
|
import io.legado.app.model.CacheBook |
|
|
|
@ -113,35 +110,42 @@ class MainViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
|
} |
|
|
|
|
val source = appDb.bookSourceDao.getBookSource(book.origin) |
|
|
|
|
if (source == null) { |
|
|
|
|
book.addType(BookType.updateError) |
|
|
|
|
appDb.bookDao.update(book) |
|
|
|
|
if (!book.isUpError) { |
|
|
|
|
book.addType(BookType.updateError) |
|
|
|
|
appDb.bookDao.update(book) |
|
|
|
|
} |
|
|
|
|
waitUpTocBooks.remove(book.bookUrl) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
waitUpTocBooks.remove(bookUrl) |
|
|
|
|
upTocAdd(bookUrl) |
|
|
|
|
execute(context = upTocPool) { |
|
|
|
|
val oldBook = book.copy() |
|
|
|
|
WebBook.runPreUpdateJs(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) |
|
|
|
|
kotlin.runCatching { |
|
|
|
|
val oldBook = book.copy() |
|
|
|
|
WebBook.runPreUpdateJs(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) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
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) { |
|
|
|
|
upTocCancel(bookUrl) |
|
|
|
|
upTocCancel(book.bookUrl) |
|
|
|
|