diff --git a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderEvent.kt b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderEvent.kt index c1b08781..1c6c6e7d 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderEvent.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderEvent.kt @@ -7,7 +7,10 @@ import ua.acclorite.book_story.domain.reader.ReaderText.Chapter @Immutable sealed class ReaderEvent { - data object OnLoadText : ReaderEvent() + data class OnLoadText( + val activity: ComponentActivity, + val fullscreenMode: Boolean + ) : ReaderEvent() data class OnMenuVisibility( val show: Boolean, diff --git a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt index 7e2f4c00..be1721e8 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt @@ -80,14 +80,21 @@ class ReaderModel @Inject constructor( errorMessage = UIText.StringResource(R.string.error_could_not_get_text) ) } + systemBarsVisibility(show = true, activity = event.activity) return@launch } + systemBarsVisibility( + show = !event.fullscreenMode, + activity = event.activity + ) + val lastOpened = getLatestHistory.execute(_state.value.book.id)?.time yield() _state.update { it.copy( + showMenu = false, book = it.book.copy( lastOpened = lastOpened ), @@ -131,23 +138,19 @@ class ReaderModel @Inject constructor( is ReaderEvent.OnMenuVisibility -> { launch { - if (_state.value.lockMenu) { - return@launch - } - - val shouldShow = event.show + if (_state.value.lockMenu) return@launch yield() systemBarsVisibility( - show = shouldShow || !event.fullscreenMode, + show = event.show || !event.fullscreenMode, activity = event.activity ) _state.update { it.copy( - showMenu = shouldShow, + showMenu = event.show, checkpoint = _state.value.listState.run { - if (!shouldShow || !event.saveCheckpoint) return@run it.checkpoint + if (!event.show || !event.saveCheckpoint) return@run it.checkpoint Checkpoint(firstVisibleItemIndex, firstVisibleItemScrollOffset) } @@ -475,14 +478,11 @@ class ReaderModel @Inject constructor( } onEvent( - ReaderEvent.OnMenuVisibility( - show = false, - fullscreenMode = fullscreenMode, - saveCheckpoint = false, - activity = activity + ReaderEvent.OnLoadText( + activity = activity, + fullscreenMode = fullscreenMode ) ) - onEvent(ReaderEvent.OnLoadText) } }