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.OnConflictStrategy
import androidx.room.Query
import androidx.room.Transaction
import androidx.room.Update
import io.legado.app.constant.BookType
import io.legado.app.data.entities.Book
@@ -150,6 +151,12 @@ interface BookDao {
@Delete
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")
fun upProgress(bookUrl: String, pos: Int)
@@ -71,8 +71,7 @@ class AudioPlayViewModel(application: Application) : BaseViewModel(application)
if (oldBook.bookUrl == book.bookUrl) {
appDb.bookDao.update(book)
} else {
appDb.bookDao.delete(oldBook)
appDb.bookDao.insert(book)
appDb.bookDao.replace(oldBook, book)
}
appDb.bookChapterDao.delByBook(book.bookUrl)
appDb.bookChapterDao.insert(*cList.toTypedArray())
@@ -235,8 +235,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
WebBook.getChapterList(scope, bookSource, book, runPreUpdateJs)
.onSuccess(IO) {
if (inBookshelf) {
appDb.bookDao.delete(oldBook)
book.save()
appDb.bookDao.replace(oldBook, book)
/**
* runPreUpdateJs 有可能会修改 book 的 bookUrl
*/
@@ -118,8 +118,7 @@ class ReadMangaViewModel(application: Application) : BaseViewModel(application)
if (oldBook.bookUrl == book.bookUrl) {
appDb.bookDao.update(book)
} else {
appDb.bookDao.delete(oldBook)
appDb.bookDao.insert(book)
appDb.bookDao.replace(oldBook, book)
BookHelp.updateCacheFolder(oldBook, book)
}
appDb.bookChapterDao.delByBook(oldBook.bookUrl)
@@ -214,8 +214,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
if (oldBook.bookUrl == book.bookUrl) {
appDb.bookDao.update(book)
} else {
appDb.bookDao.delete(oldBook)
appDb.bookDao.insert(book)
appDb.bookDao.replace(oldBook, book)
BookHelp.updateCacheFolder(oldBook, book)
}
appDb.bookChapterDao.delByBook(oldBook.bookUrl)
@@ -167,8 +167,7 @@ class MainViewModel(application: Application) : BaseViewModel(application) {
if (book.bookUrl == bookUrl) {
appDb.bookDao.update(book)
} else {
appDb.bookDao.delete(oldBook)
appDb.bookDao.insert(book)
appDb.bookDao.replace(oldBook, book)
BookHelp.updateCacheFolder(oldBook, book)
}
appDb.bookChapterDao.delByBook(bookUrl)