|
@@ -197,27 +197,29 @@ class MangaReaderViewModel(
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
MangaReaderIntent.BackPressed -> {
|
|
MangaReaderIntent.BackPressed -> {
|
|
|
- when {
|
|
|
|
|
- _uiState.value.activeDialog != null -> {
|
|
|
|
|
|
|
+ when (
|
|
|
|
|
+ resolveMangaBackAction(
|
|
|
|
|
+ hasActiveDialog = _uiState.value.activeDialog != null,
|
|
|
|
|
+ hasActiveSheet = _uiState.value.activeSheet != null,
|
|
|
|
|
+ hasSettingsCategory = _uiState.value.settingsCategory != null,
|
|
|
|
|
+ menuVisible = _uiState.value.menuVisible,
|
|
|
|
|
+ )
|
|
|
|
|
+ ) {
|
|
|
|
|
+ MangaBackAction.DISMISS_DIALOG -> {
|
|
|
_uiState.update { it.copy(activeDialog = null) }
|
|
_uiState.update { it.copy(activeDialog = null) }
|
|
|
}
|
|
}
|
|
|
- _uiState.value.activeSheet != null -> {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ MangaBackAction.DISMISS_SHEET -> {
|
|
|
_uiState.update { it.copy(activeSheet = null) }
|
|
_uiState.update { it.copy(activeSheet = null) }
|
|
|
}
|
|
}
|
|
|
- _uiState.value.settingsCategory != null -> closeSettings()
|
|
|
|
|
- _uiState.value.menuVisible -> setMenuVisible(false)
|
|
|
|
|
- readerSession.state.value.book != null &&
|
|
|
|
|
- readerSession.state.value.book?.inBookshelf == false &&
|
|
|
|
|
- _uiState.value.confirmAddToShelf -> {
|
|
|
|
|
- _uiState.update { it.copy(activeDialog = MangaReaderDialog.AddToShelf) }
|
|
|
|
|
- }
|
|
|
|
|
- readerSession.state.value.book != null &&
|
|
|
|
|
- readerSession.state.value.book?.inBookshelf == false -> onIntent(
|
|
|
|
|
- MangaReaderIntent.DiscardCurrentBookAndExit
|
|
|
|
|
- )
|
|
|
|
|
- else -> _effects.tryEmit(MangaReaderEffect.Finish())
|
|
|
|
|
|
|
+
|
|
|
|
|
+ MangaBackAction.CLOSE_SETTINGS -> closeSettings()
|
|
|
|
|
+ MangaBackAction.HIDE_MENU -> setMenuVisible(false)
|
|
|
|
|
+ MangaBackAction.CLOSE_READER -> closeReader()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ MangaReaderIntent.CloseReader -> closeReader()
|
|
|
MangaReaderIntent.ToggleMenu -> setMenuVisible(!_uiState.value.menuVisible)
|
|
MangaReaderIntent.ToggleMenu -> setMenuVisible(!_uiState.value.menuVisible)
|
|
|
MangaReaderIntent.HideMenu -> setMenuVisible(false)
|
|
MangaReaderIntent.HideMenu -> setMenuVisible(false)
|
|
|
MangaReaderIntent.Retry -> launchAction {
|
|
MangaReaderIntent.Retry -> launchAction {
|
|
@@ -761,6 +763,33 @@ class MangaReaderViewModel(
|
|
|
_effects.tryEmit(effect)
|
|
_effects.tryEmit(effect)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private fun closeReader() {
|
|
|
|
|
+ when {
|
|
|
|
|
+ readerSession.state.value.book != null &&
|
|
|
|
|
+ readerSession.state.value.book?.inBookshelf == false &&
|
|
|
|
|
+ _uiState.value.confirmAddToShelf -> {
|
|
|
|
|
+ setMenuVisible(false)
|
|
|
|
|
+ _uiState.update {
|
|
|
|
|
+ it.copy(
|
|
|
|
|
+ activeDialog = MangaReaderDialog.AddToShelf,
|
|
|
|
|
+ activeSheet = null,
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ readerSession.state.value.book != null &&
|
|
|
|
|
+ readerSession.state.value.book?.inBookshelf == false -> {
|
|
|
|
|
+ setMenuVisible(false)
|
|
|
|
|
+ onIntent(MangaReaderIntent.DiscardCurrentBookAndExit)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ else -> {
|
|
|
|
|
+ setMenuVisible(false)
|
|
|
|
|
+ _effects.tryEmit(MangaReaderEffect.Finish())
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private fun showSheet(sheet: MangaReaderSheet) {
|
|
private fun showSheet(sheet: MangaReaderSheet) {
|
|
|
setMenuVisible(false)
|
|
setMenuVisible(false)
|
|
|
_uiState.update { it.copy(activeSheet = sheet) }
|
|
_uiState.update { it.copy(activeSheet = sheet) }
|