fix: 修复从未加入书架弹窗确认后返回仍显示未加入书架
This commit is contained in:
@@ -12,7 +12,10 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.book.isAudio
|
||||
import io.legado.app.help.book.isImage
|
||||
@@ -58,6 +61,7 @@ fun BookInfoRouteScreen(
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val activity = context as AppCompatActivity
|
||||
val lifecycleOwner = LocalLifecycleOwner.current
|
||||
|
||||
val tocActivityResult = rememberLauncherForActivityResult(TocActivityResult()) {
|
||||
viewModel.onTocResult(it)
|
||||
@@ -104,6 +108,18 @@ fun BookInfoRouteScreen(
|
||||
}
|
||||
}
|
||||
|
||||
DisposableEffect(lifecycleOwner, viewModel) {
|
||||
val observer = LifecycleEventObserver { _, event ->
|
||||
if (event == Lifecycle.Event.ON_RESUME) {
|
||||
viewModel.refreshShelfState()
|
||||
}
|
||||
}
|
||||
lifecycleOwner.lifecycle.addObserver(observer)
|
||||
onDispose {
|
||||
lifecycleOwner.lifecycle.removeObserver(observer)
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(viewModel, activity) {
|
||||
viewModel.effects.collectLatest { effect ->
|
||||
when (effect) {
|
||||
|
||||
@@ -351,6 +351,22 @@ class BookInfoViewModel(
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshShelfState() {
|
||||
val bookUrl = currentBook?.bookUrl ?: return
|
||||
execute {
|
||||
appDb.bookDao.getBook(bookUrl)
|
||||
}.onSuccess { dbBook ->
|
||||
val nextInBookshelf = dbBook != null && !dbBook.isNotShelf
|
||||
if (nextInBookshelf) {
|
||||
currentBook = dbBook
|
||||
}
|
||||
if (inBookshelf != nextInBookshelf || nextInBookshelf) {
|
||||
inBookshelf = nextInBookshelf
|
||||
syncUiState()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun toggleCanUpdate() {
|
||||
currentBook?.let { book ->
|
||||
book.canUpdate = !book.canUpdate
|
||||
|
||||
Reference in New Issue
Block a user