This commit is contained in:
Horis
2025-08-02 14:55:49 +08:00
parent c5123eed6c
commit 174a80caa0
6 changed files with 12 additions and 10 deletions
@@ -5,6 +5,7 @@ import androidx.room.Delete
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import androidx.room.Transaction
import androidx.room.Update import androidx.room.Update
import io.legado.app.constant.BookType import io.legado.app.constant.BookType
import io.legado.app.data.entities.Book import io.legado.app.data.entities.Book
@@ -150,6 +151,12 @@ interface BookDao {
@Delete @Delete
fun delete(vararg book: Book) fun delete(vararg book: Book)
@Transaction
fun replace(oldBook: Book, newBook: Book) {
delete(oldBook)
insert(newBook)
}
@Query("update books set durChapterPos = :pos where bookUrl = :bookUrl") @Query("update books set durChapterPos = :pos where bookUrl = :bookUrl")
fun upProgress(bookUrl: String, pos: Int) fun upProgress(bookUrl: String, pos: Int)
@@ -71,8 +71,7 @@ class AudioPlayViewModel(application: Application) : BaseViewModel(application)
if (oldBook.bookUrl == book.bookUrl) { if (oldBook.bookUrl == book.bookUrl) {
appDb.bookDao.update(book) appDb.bookDao.update(book)
} else { } else {
appDb.bookDao.delete(oldBook) appDb.bookDao.replace(oldBook, book)
appDb.bookDao.insert(book)
} }
appDb.bookChapterDao.delByBook(book.bookUrl) appDb.bookChapterDao.delByBook(book.bookUrl)
appDb.bookChapterDao.insert(*cList.toTypedArray()) appDb.bookChapterDao.insert(*cList.toTypedArray())
@@ -235,8 +235,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
WebBook.getChapterList(scope, bookSource, book, runPreUpdateJs) WebBook.getChapterList(scope, bookSource, book, runPreUpdateJs)
.onSuccess(IO) { .onSuccess(IO) {
if (inBookshelf) { if (inBookshelf) {
appDb.bookDao.delete(oldBook) appDb.bookDao.replace(oldBook, book)
book.save()
/** /**
* runPreUpdateJs 有可能会修改 book 的 bookUrl * runPreUpdateJs 有可能会修改 book 的 bookUrl
*/ */
@@ -118,8 +118,7 @@ class ReadMangaViewModel(application: Application) : BaseViewModel(application)
if (oldBook.bookUrl == book.bookUrl) { if (oldBook.bookUrl == book.bookUrl) {
appDb.bookDao.update(book) appDb.bookDao.update(book)
} else { } else {
appDb.bookDao.delete(oldBook) appDb.bookDao.replace(oldBook, book)
appDb.bookDao.insert(book)
BookHelp.updateCacheFolder(oldBook, book) BookHelp.updateCacheFolder(oldBook, book)
} }
appDb.bookChapterDao.delByBook(oldBook.bookUrl) appDb.bookChapterDao.delByBook(oldBook.bookUrl)
@@ -214,8 +214,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
if (oldBook.bookUrl == book.bookUrl) { if (oldBook.bookUrl == book.bookUrl) {
appDb.bookDao.update(book) appDb.bookDao.update(book)
} else { } else {
appDb.bookDao.delete(oldBook) appDb.bookDao.replace(oldBook, book)
appDb.bookDao.insert(book)
BookHelp.updateCacheFolder(oldBook, book) BookHelp.updateCacheFolder(oldBook, book)
} }
appDb.bookChapterDao.delByBook(oldBook.bookUrl) appDb.bookChapterDao.delByBook(oldBook.bookUrl)
@@ -167,8 +167,7 @@ class MainViewModel(application: Application) : BaseViewModel(application) {
if (book.bookUrl == bookUrl) { if (book.bookUrl == bookUrl) {
appDb.bookDao.update(book) appDb.bookDao.update(book)
} else { } else {
appDb.bookDao.delete(oldBook) appDb.bookDao.replace(oldBook, book)
appDb.bookDao.insert(book)
BookHelp.updateCacheFolder(oldBook, book) BookHelp.updateCacheFolder(oldBook, book)
} }
appDb.bookChapterDao.delByBook(bookUrl) appDb.bookChapterDao.delByBook(bookUrl)