fix: 屏幕方向和屏幕超时设置切换后不立即生效
MoreConfigSheet 中屏幕方向和屏幕超时的变更只写入 DataStore,需经过 6 步异步传播(DataStore → Flow → ViewModel → Effect → Controller) 才能生效,导致: - 切换横屏后文字显示不全,仍保持竖屏布局 - 目录不跟随横屏显示 - 屏幕超时设置延迟生效 修复: - 新增 ReadBookIntent.SetOrientation 意图,直接写入 ReadConfig 并发射 Effect - 将 ReadBookIntent.KeepLightChanged 改为带值的 data class,同理直接生效 - MoreConfigSheet 在写 DataStore 的同时同步调用 onIntent,立即应用变更 - 新增反向横屏(REVERSE_LANDSCAPE)选项
This commit is contained in:
@@ -425,7 +425,8 @@ sealed interface ReadBookIntent {
|
||||
data class TextActionDict(val text: String) : ReadBookIntent
|
||||
|
||||
// Screen / selection config
|
||||
data object KeepLightChanged : ReadBookIntent
|
||||
data class KeepLightChanged(val value: String) : ReadBookIntent
|
||||
data class SetOrientation(val value: String) : ReadBookIntent
|
||||
data class TextSelectAbleChanged(val enabled: Boolean) : ReadBookIntent
|
||||
|
||||
// Media / TTS
|
||||
|
||||
@@ -35,6 +35,7 @@ import io.legado.app.domain.usecase.GetReadingProgressUseCase
|
||||
import io.legado.app.domain.usecase.UploadReadingProgressUseCase
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.help.DefaultData
|
||||
import io.legado.app.ui.config.readConfig.ReadConfig
|
||||
import io.legado.app.help.book.BookHelp
|
||||
import io.legado.app.help.book.ContentProcessor
|
||||
import io.legado.app.help.book.isEpub
|
||||
@@ -581,7 +582,15 @@ class ReadBookViewModel(
|
||||
is ReadBookIntent.SaveMenuButtonConfig -> saveMenuButtonConfig(intent.items)
|
||||
is ReadBookIntent.SaveTitleBarButtonConfig -> saveTitleBarButtonConfig(intent.items)
|
||||
|
||||
is ReadBookIntent.KeepLightChanged -> _effects.tryEmit(ReadBookEffect.UpScreenTimeOut)
|
||||
is ReadBookIntent.KeepLightChanged -> {
|
||||
ReadConfig.keepLight = intent.value
|
||||
_readPreferences.update { it.copy(keepLight = intent.value) }
|
||||
_effects.tryEmit(ReadBookEffect.UpScreenTimeOut)
|
||||
}
|
||||
is ReadBookIntent.SetOrientation -> {
|
||||
ReadConfig.screenOrientation = intent.value
|
||||
_effects.tryEmit(ReadBookEffect.SetOrientation)
|
||||
}
|
||||
is ReadBookIntent.TextSelectAbleChanged -> _effects.tryEmit(
|
||||
ReadBookEffect.UpTextSelectAble(
|
||||
intent.enabled
|
||||
|
||||
@@ -56,9 +56,11 @@ fun MoreConfigSheet(
|
||||
ScreenSettings(
|
||||
preferences = preferences,
|
||||
onScreenOrientationChange = {
|
||||
onIntent(ReadBookIntent.SetOrientation(it))
|
||||
scope.launch { readSettingsRepository.setScreenOrientation(it) }
|
||||
},
|
||||
onKeepLightChange = {
|
||||
onIntent(ReadBookIntent.KeepLightChanged(it))
|
||||
scope.launch { readSettingsRepository.setKeepLight(it) }
|
||||
},
|
||||
onHideStatusBarChange = {
|
||||
|
||||
Reference in New Issue
Block a user