Horis 2 سال پیش
والد
کامیت
11f65412c6
1فایلهای تغییر یافته به همراه61 افزوده شده و 63 حذف شده
  1. 61 63
      app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt

+ 61 - 63
app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt

@@ -164,39 +164,37 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
         canReName: Boolean = true,
         scope: CoroutineScope = viewModelScope
     ) {
-        execute(scope) {
-            if (book.isLocal) {
-                loadChapter(book, scope)
-            } else {
-                bookSource?.let { bookSource ->
-                    WebBook.getBookInfo(this, bookSource, book, canReName = canReName)
-                        .onSuccess(IO) {
-                            val dbBook = appDb.bookDao.getBook(book.name, book.author)
-                            if (dbBook != null) {
-                                dbBook.updateTo(it)
-                                inBookshelf = true
-                            }
-                            bookData.postValue(it)
-                            if (inBookshelf) {
-                                appDb.bookDao.update(it)
-                                if (dbBook!!.name != book.name) {
-                                    BookHelp.updateCacheFolder(dbBook, book)
-                                }
-                            }
-                            if (it.isWebFile) {
-                                loadWebFile(it, scope)
-                            } else {
-                                loadChapter(it, scope)
-                            }
-                        }.onError {
-                            AppLog.put("获取书籍信息失败\n${it.localizedMessage}", it)
-                            context.toastOnUi(R.string.error_get_book_info)
+        if (book.isLocal) {
+            loadChapter(book, scope)
+        } else {
+            val bookSource = bookSource ?: let {
+                chapterListData.postValue(emptyList())
+                context.toastOnUi(R.string.error_no_source)
+                return
+            }
+            WebBook.getBookInfo(scope, bookSource, book, canReName = canReName)
+                .onSuccess(IO) {
+                    val dbBook = appDb.bookDao.getBook(book.name, book.author)
+                    if (dbBook != null) {
+                        dbBook.updateTo(it)
+                        inBookshelf = true
+                    }
+                    bookData.postValue(it)
+                    if (inBookshelf) {
+                        appDb.bookDao.update(it)
+                        if (dbBook!!.name != book.name) {
+                            BookHelp.updateCacheFolder(dbBook, book)
                         }
-                } ?: let {
-                    chapterListData.postValue(emptyList())
-                    context.toastOnUi(R.string.error_no_source)
+                    }
+                    if (it.isWebFile) {
+                        loadWebFile(it, scope)
+                    } else {
+                        loadChapter(it, scope)
+                    }
+                }.onError {
+                    AppLog.put("获取书籍信息失败\n${it.localizedMessage}", it)
+                    context.toastOnUi(R.string.error_get_book_info)
                 }
-            }
         }
     }
 
@@ -204,47 +202,47 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
         book: Book,
         scope: CoroutineScope = viewModelScope
     ) {
-        execute(scope) {
-            if (book.isLocal) {
+        if (book.isLocal) {
+            execute(scope) {
                 LocalBook.getChapterList(book).let {
                     appDb.bookDao.update(book)
                     appDb.bookChapterDao.delByBook(book.bookUrl)
                     appDb.bookChapterDao.insert(*it.toTypedArray())
                     chapterListData.postValue(it)
                 }
-            } else {
-                bookSource?.let { bookSource ->
-                    val oldBook = book.copy()
-                    WebBook.getChapterList(this, bookSource, book, true)
-                        .onSuccess(IO) {
-                            val dbBook = appDb.bookDao.getBook(book.name, book.author)
-                            if (dbBook?.bookUrl == oldBook.bookUrl) {
-                                if (oldBook.bookUrl == book.bookUrl) {
-                                    appDb.bookDao.update(book)
-                                } else {
-                                    appDb.bookDao.insert(book)
-                                    BookHelp.updateCacheFolder(oldBook, book)
-                                }
-                                appDb.bookChapterDao.delByBook(oldBook.bookUrl)
-                                appDb.bookChapterDao.insert(*it.toTypedArray())
-                                if (book.isSameNameAuthor(ReadBook.book)) {
-                                    ReadBook.book = book
-                                    ReadBook.chapterSize = book.totalChapterNum
-                                }
-                            }
-                            chapterListData.postValue(it)
-                        }.onError {
-                            chapterListData.postValue(emptyList())
-                            AppLog.put("获取目录失败\n${it.localizedMessage}", it)
-                            context.toastOnUi(R.string.error_get_chapter_list)
+            }.onError {
+                context.toastOnUi("LoadTocError:${it.localizedMessage}")
+            }
+        } else {
+            val bookSource = bookSource ?: let {
+                chapterListData.postValue(emptyList())
+                context.toastOnUi(R.string.error_no_source)
+                return
+            }
+            val oldBook = book.copy()
+            WebBook.getChapterList(scope, bookSource, book, true)
+                .onSuccess(IO) {
+                    val dbBook = appDb.bookDao.getBook(book.name, book.author)
+                    if (dbBook?.bookUrl == oldBook.bookUrl) {
+                        if (oldBook.bookUrl == book.bookUrl) {
+                            appDb.bookDao.update(book)
+                        } else {
+                            appDb.bookDao.insert(book)
+                            BookHelp.updateCacheFolder(oldBook, book)
+                        }
+                        appDb.bookChapterDao.delByBook(oldBook.bookUrl)
+                        appDb.bookChapterDao.insert(*it.toTypedArray())
+                        if (book.isSameNameAuthor(ReadBook.book)) {
+                            ReadBook.book = book
+                            ReadBook.chapterSize = book.totalChapterNum
                         }
-                } ?: let {
+                    }
+                    chapterListData.postValue(it)
+                }.onError {
                     chapterListData.postValue(emptyList())
-                    context.toastOnUi(R.string.error_no_source)
+                    AppLog.put("获取目录失败\n${it.localizedMessage}", it)
+                    context.toastOnUi(R.string.error_get_chapter_list)
                 }
-            }
-        }.onError {
-            context.toastOnUi("LoadTocError:${it.localizedMessage}")
         }
     }