Horis 1 год назад
Родитель
Сommit
ad85d9f6ec

+ 44 - 6
app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

@@ -6,7 +6,9 @@ import androidx.documentfile.provider.DocumentFile
 import com.script.ScriptBindings
 import com.script.rhino.RhinoScriptEngine
 import io.legado.app.R
-import io.legado.app.constant.*
+import io.legado.app.constant.AppLog
+import io.legado.app.constant.AppPattern
+import io.legado.app.constant.BookType
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.BaseSource
 import io.legado.app.data.entities.Book
@@ -16,16 +18,47 @@ import io.legado.app.exception.NoBooksDirException
 import io.legado.app.exception.NoStackTraceException
 import io.legado.app.exception.TocEmptyException
 import io.legado.app.help.AppWebDav
-import io.legado.app.help.book.*
+import io.legado.app.help.book.BookHelp
+import io.legado.app.help.book.ContentProcessor
+import io.legado.app.help.book.addType
+import io.legado.app.help.book.archiveName
+import io.legado.app.help.book.getArchiveUri
+import io.legado.app.help.book.getLocalUri
+import io.legado.app.help.book.getRemoteUrl
+import io.legado.app.help.book.isArchive
+import io.legado.app.help.book.isEpub
+import io.legado.app.help.book.isMobi
+import io.legado.app.help.book.isPdf
+import io.legado.app.help.book.isUmd
+import io.legado.app.help.book.removeLocalUriCache
+import io.legado.app.help.book.simulatedTotalChapterNum
+import io.legado.app.help.book.update
 import io.legado.app.help.config.AppConfig
 import io.legado.app.lib.webdav.WebDav
 import io.legado.app.lib.webdav.WebDavException
 import io.legado.app.model.analyzeRule.AnalyzeUrl
-import io.legado.app.utils.*
+import io.legado.app.utils.ArchiveUtils
+import io.legado.app.utils.FileDoc
+import io.legado.app.utils.FileUtils
+import io.legado.app.utils.GSON
+import io.legado.app.utils.MD5Utils
+import io.legado.app.utils.externalFiles
+import io.legado.app.utils.fromJsonObject
+import io.legado.app.utils.getFile
+import io.legado.app.utils.inputStream
+import io.legado.app.utils.isAbsUrl
+import io.legado.app.utils.isContentScheme
+import io.legado.app.utils.isDataUrl
+import io.legado.app.utils.printOnDebug
 import kotlinx.coroutines.runBlocking
 import org.apache.commons.text.StringEscapeUtils
 import splitties.init.appCtx
-import java.io.*
+import java.io.ByteArrayInputStream
+import java.io.File
+import java.io.FileInputStream
+import java.io.FileNotFoundException
+import java.io.FileOutputStream
+import java.io.InputStream
 import java.util.regex.Pattern
 
 /**
@@ -112,9 +145,14 @@ object LocalBook {
         list.forEachIndexed { index, bookChapter ->
             bookChapter.index = index
         }
-        book.latestChapterTitle = list.last().title
+        val replaceRules = ContentProcessor.get(book).getTitleReplaceRules()
+        book.durChapterTitle = list.getOrElse(book.durChapterIndex) { list.last() }
+            .getDisplayTitle(replaceRules, book.getUseReplaceRule())
+        book.latestChapterTitle =
+            list.getOrElse(book.simulatedTotalChapterNum() - 1) { list.last() }
+                .getDisplayTitle(replaceRules, book.getUseReplaceRule())
         book.totalChapterNum = list.size
-        book.save()
+        book.update()
         return list
     }
 

+ 1 - 1
app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt

@@ -150,7 +150,7 @@ object BookChapterList {
                 }
             }
         }
-        val replaceRules = ContentProcessor.get(book.name, book.origin).getTitleReplaceRules()
+        val replaceRules = ContentProcessor.get(book).getTitleReplaceRules()
         book.durChapterTitle = list.getOrElse(book.durChapterIndex) { list.last() }
             .getDisplayTitle(replaceRules, book.getUseReplaceRule())
         if (book.totalChapterNum < list.size) {

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

@@ -226,6 +226,12 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
                     appDb.bookDao.update(book)
                     appDb.bookChapterDao.delByBook(book.bookUrl)
                     appDb.bookChapterDao.insert(*it.toTypedArray())
+                    if (book.isSameNameAuthor(ReadBook.book)) {
+                        ReadBook.book = book
+                        ReadBook.chapterSize = book.totalChapterNum
+                        ReadBook.simulatedChapterSize = book.simulatedTotalChapterNum()
+                        ReadBook.clearTextChapter()
+                    }
                     chapterListData.postValue(it)
                 }
             }.onError {