diff --git a/app/src/main/java/io/legado/app/domain/usecase/ChangeSourceSearchUseCase.kt b/app/src/main/java/io/legado/app/domain/usecase/ChangeSourceSearchUseCase.kt index 408c7466f..48c94ce31 100644 --- a/app/src/main/java/io/legado/app/domain/usecase/ChangeSourceSearchUseCase.kt +++ b/app/src/main/java/io/legado/app/domain/usecase/ChangeSourceSearchUseCase.kt @@ -154,7 +154,7 @@ class ChangeSourceSearchUseCase( loadInfo || loadToc || loadWordCount -> { val book = searchBook.toBook() try { - loadBookInfo( + val wordCountSearchBook = loadBookInfo( source, book, loadToc, @@ -163,8 +163,7 @@ class ChangeSourceSearchUseCase( fromReadBookActivity, contentProcessor ) - val processedSearchBook = book.toSearchBook() - processedBooks.add(processedSearchBook) + processedBooks.add(wordCountSearchBook ?: book.toSearchBook()) } catch (e: Throwable) { if (e is CancellationException) throw e processedBooks.add(searchBook) @@ -187,12 +186,12 @@ class ChangeSourceSearchUseCase( oldBook: Book, fromReadBookActivity: Boolean, contentProcessor: ContentProcessor, - ) { + ): SearchBook? { if (book.tocUrl.isEmpty()) { WebBook.getBookInfoAwait(source, book) } if (loadToc || loadWordCount) { - loadBookToc( + return loadBookToc( source, book, loadWordCount, @@ -201,6 +200,7 @@ class ChangeSourceSearchUseCase( contentProcessor ) } + return null } private suspend fun loadBookToc( @@ -210,7 +210,7 @@ class ChangeSourceSearchUseCase( oldBook: Book, fromReadBookActivity: Boolean, contentProcessor: ContentProcessor, - ) { + ): SearchBook? { val chapters = WebBook.getChapterListAwait(source, book).getOrThrow() for (chapter in chapters) { chapter.internString() @@ -222,7 +222,7 @@ class ChangeSourceSearchUseCase( bookMap[book.primaryStr()] = book book.releaseHtmlData() if (loadWordCount) { - loadBookWordCount( + return loadBookWordCount( source, book, chapters, @@ -231,6 +231,7 @@ class ChangeSourceSearchUseCase( contentProcessor ) } + return null } private suspend fun loadBookWordCount( @@ -240,21 +241,21 @@ class ChangeSourceSearchUseCase( oldBook: Book, fromReadBookActivity: Boolean, contentProcessor: ContentProcessor, - ) { - if (chapters.isEmpty()) return + ): SearchBook? { + if (chapters.isEmpty()) return null val chapterIndex = if (fromReadBookActivity) { BookHelp.getDurChapter(oldBook, chapters) } else { chapters.lastIndex } - if (chapterIndex !in chapters.indices) return + if (chapterIndex !in chapters.indices) return null val bookChapter = chapters[chapterIndex] var title = bookChapter.title.trim() if (title.length > 20) { title = title.substring(0, 20) + "…" } val startTime = System.currentTimeMillis() - try { + return try { val nextChapterUrl = chapters.getOrNull(chapterIndex + 1)?.url var content = WebBook.getContentAwait(source, book, bookChapter, nextChapterUrl, false) content = contentProcessor.getContent(oldBook, bookChapter, content, false).toString() diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceComposeViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceComposeViewModel.kt index adccfda3f..9a29f0569 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceComposeViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceComposeViewModel.kt @@ -227,13 +227,11 @@ class ChangeBookSourceComposeViewModel( fun onLoadInfoChange(enabled: Boolean) { if (ChangeSourceConfig.loadInfo == enabled) return ChangeSourceConfig.loadInfo = enabled - refresh() } fun onLoadTocChange(enabled: Boolean) { if (ChangeSourceConfig.loadToc == enabled) return ChangeSourceConfig.loadToc = enabled - refresh() } fun onLoadWordCountChange(enabled: Boolean) { diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt index 6c4d64967..b14c08318 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt @@ -323,13 +323,11 @@ class ChangeBookSourceDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_b R.id.menu_load_info -> { ChangeSourceConfig.loadInfo = !item.isChecked item.isChecked = !item.isChecked - viewModel.refresh() } R.id.menu_load_toc -> { ChangeSourceConfig.loadToc = !item.isChecked item.isChecked = !item.isChecked - viewModel.refresh() } R.id.menu_load_word_count -> { diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt index 71d87ba5e..006bbfe3a 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt @@ -133,13 +133,11 @@ class ChangeChapterSourceViewModel( is ChangeChapterSourceIntent.SetLoadInfo -> { ChangeSourceConfig.loadInfo = intent.enabled _uiState.update { it.copy(loadInfo = intent.enabled) } - refreshResults() } is ChangeChapterSourceIntent.SetLoadToc -> { ChangeSourceConfig.loadToc = intent.enabled _uiState.update { it.copy(loadToc = intent.enabled) } - refreshResults() } is ChangeChapterSourceIntent.SetLoadWordCount -> {