瀏覽代碼

[修复] 删除书籍时偶现的闪退问题

HapeLee 7 月之前
父節點
當前提交
dd46484805

+ 1 - 0
app/src/main/java/io/legado/app/data/entities/Book.kt

@@ -374,6 +374,7 @@ data class Book(
         if (ReadBook.book?.bookUrl == bookUrl) {
         if (ReadBook.book?.bookUrl == bookUrl) {
             ReadBook.book = null
             ReadBook.book = null
         }
         }
+        appDb.bookChapterDao.delByBook(bookUrl)
         appDb.bookDao.delete(this)
         appDb.bookDao.delete(this)
     }
     }
 
 

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

@@ -487,11 +487,11 @@ class BookInfoViewModel(
     fun delBook(deleteOriginal: Boolean = false, success: (() -> Unit)? = null) {
     fun delBook(deleteOriginal: Boolean = false, success: (() -> Unit)? = null) {
         execute {
         execute {
             bookData.value?.let {
             bookData.value?.let {
-                it.delete()
                 inBookshelf = false
                 inBookshelf = false
                 if (it.isLocal) {
                 if (it.isLocal) {
                     LocalBook.deleteBook(it, deleteOriginal)
                     LocalBook.deleteBook(it, deleteOriginal)
                 }
                 }
+                it.delete()
             }
             }
         }.onSuccess {
         }.onSuccess {
             success?.invoke()
             success?.invoke()

+ 2 - 1
app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageViewModel.kt

@@ -54,7 +54,6 @@ class BookshelfManageViewModel(application: Application) : BaseViewModel(applica
 
 
     fun deleteBook(books: List<Book>, deleteOriginal: Boolean = false) {
     fun deleteBook(books: List<Book>, deleteOriginal: Boolean = false) {
         execute {
         execute {
-            appDb.bookDao.delete(*books.toTypedArray())
             books.forEach {
             books.forEach {
                 if (it.isLocal) {
                 if (it.isLocal) {
                     LocalBook.deleteBook(it, deleteOriginal)
                     LocalBook.deleteBook(it, deleteOriginal)
@@ -62,7 +61,9 @@ class BookshelfManageViewModel(application: Application) : BaseViewModel(applica
                     val source = appDb.bookSourceDao.getBookSource(it.origin)
                     val source = appDb.bookSourceDao.getBookSource(it.origin)
                     SourceCallBack.callBackBook(SourceCallBack.DEL_BOOK_SHELF, source, it)
                     SourceCallBack.callBackBook(SourceCallBack.DEL_BOOK_SHELF, source, it)
                 }
                 }
+                appDb.bookChapterDao.delByBook(it.bookUrl)
             }
             }
+            appDb.bookDao.delete(*books.toTypedArray())
         }
         }
     }
     }