Avoid initial loading indicator on book info

This commit is contained in:
HapeLee committed 2026-06-21 00:43:48 +08:00
1 parent 43d2b616f6
commit a5516245fe
3 files changed
+14 -14

No files matched your search

@@ -25,7 +25,7 @@ data class BookInfoUiState(
val inBookshelf: Boolean = false, val inBookshelf: Boolean = false,
val bookSource: BookInfoSourceUi? = null, val bookSource: BookInfoSourceUi? = null,
val relatedBooks: ImmutableList<RelatedBooksUi> = persistentListOf(), val relatedBooks: ImmutableList<RelatedBooksUi> = persistentListOf(),
val isTocLoading: Boolean = true, val isTocLoading: Boolean = false,
val isBusy: Boolean = false, val isBusy: Boolean = false,
val deleteAlertEnabled: Boolean = true, val deleteAlertEnabled: Boolean = true,
val deleteOriginal: Boolean = false, val deleteOriginal: Boolean = false,
@@ -182,9 +182,7 @@ private fun BookInfoScreenContent(
) { paddingValues -> ) { paddingValues ->
val book = state.book val book = state.book
if (book == null) { if (book == null) {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { Box(modifier = Modifier.fillMaxSize())
AppCircularProgressIndicator()
}
} else { } else {
Box(modifier = Modifier.fillMaxSize()) { Box(modifier = Modifier.fillMaxSize()) {
BookInfoBackdrop( BookInfoBackdrop(
@@ -705,13 +705,14 @@ class BookInfoViewModel(
canReName: Boolean = true, canReName: Boolean = true,
runPreUpdateJs: Boolean = true, runPreUpdateJs: Boolean = true,
scope: CoroutineScope = viewModelScope, scope: CoroutineScope = viewModelScope,
showLoading: Boolean = true,
) { ) {
syncUiState(isTocLoading = true) syncUiState(isTocLoading = showLoading)
if (book.isLocal) { if (book.isLocal) {
LocalBook.upBookInfo(book) LocalBook.upBookInfo(book)
currentBook = book currentBook = book
syncUiState(isTocLoading = true) syncUiState(isTocLoading = showLoading)
loadChapter(book) loadChapter(book, showLoading = showLoading)
} else { } else {
val source = bookSource ?: run { val source = bookSource ?: run {
currentChapterList = emptyList() currentChapterList = emptyList()
@@ -730,14 +731,14 @@ class BookInfoViewModel(
if (inBookshelf) { if (inBookshelf) {
loadedBook.save() loadedBook.save()
} }
syncUiState(isTocLoading = true) syncUiState(isTocLoading = showLoading)
refreshMeta(loadedBook) refreshMeta(loadedBook)
if (loadedBook.isWebFile) { if (loadedBook.isWebFile) {
loadWebFile(loadedBook) loadWebFile(loadedBook)
currentChapterList = emptyList() currentChapterList = emptyList()
syncUiState(isTocLoading = false) syncUiState(isTocLoading = false)
} else { } else {
loadChapter(loadedBook, runPreUpdateJs) loadChapter(loadedBook, runPreUpdateJs, showLoading = showLoading)
} }
scheduleRelatedBooksLoad(loadedBook, source) scheduleRelatedBooksLoad(loadedBook, source)
}.onError { }.onError {
@@ -786,11 +787,11 @@ class BookInfoViewModel(
currentGroupNames = null currentGroupNames = null
currentHasCustomGroup = false currentHasCustomGroup = false
bookSource = source bookSource = source
syncUiState(isTocLoading = true) syncUiState(isTocLoading = false)
refreshMeta(book) refreshMeta(book)
upCoverByRule(book) upCoverByRule(book)
if (book.tocUrl.isEmpty() && !book.isLocal) { if (book.tocUrl.isEmpty() && !book.isLocal) {
loadBookInfo(book, runPreUpdateJs = inBookshelf) loadBookInfo(book, runPreUpdateJs = inBookshelf, showLoading = false)
} else { } else {
execute { execute {
appDb.bookChapterDao.getChapterList(book.bookUrl) appDb.bookChapterDao.getChapterList(book.bookUrl)
@@ -800,10 +801,10 @@ class BookInfoViewModel(
syncUiState(isTocLoading = false) syncUiState(isTocLoading = false)
source?.let { scheduleRelatedBooksLoad(book, it) } source?.let { scheduleRelatedBooksLoad(book, it) }
} else { } else {
loadChapter(book) loadChapter(book, showLoading = false)
} }
}.onError { }.onError {
loadChapter(book) loadChapter(book, showLoading = false)
} }
} }
} }
@@ -851,8 +852,9 @@ class BookInfoViewModel(
book: Book, book: Book,
runPreUpdateJs: Boolean = true, runPreUpdateJs: Boolean = true,
scope: CoroutineScope = viewModelScope, scope: CoroutineScope = viewModelScope,
showLoading: Boolean = true,
) { ) {
syncUiState(isTocLoading = true) syncUiState(isTocLoading = showLoading)
if (book.isLocal) { if (book.isLocal) {
execute(scope) { execute(scope) {
LocalBook.getChapterList(book).also { LocalBook.getChapterList(book).also {