From d81810f3aa6c8406cb09d4a8e1d14a074692df0f Mon Sep 17 00:00:00 2001 From: acclorite Date: Tue, 9 Jul 2024 18:31:35 +0300 Subject: [PATCH] BookInfoScreen: Removed Author and Description update(only manual changes). --- .../screens/book_info/BookInfoScreen.kt | 1 - .../BookInfoConfirmUpateDialog.kt | 34 +--- .../screens/book_info/data/BookInfoEvent.kt | 5 +- .../screens/book_info/data/BookInfoState.kt | 5 +- .../book_info/data/BookInfoViewModel.kt | 189 ++++++------------ app/src/main/res/values-uk/strings.xml | 7 +- app/src/main/res/values/strings.xml | 7 +- 7 files changed, 84 insertions(+), 164 deletions(-) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt index 78178fc0..ab021289 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/BookInfoScreen.kt @@ -167,7 +167,6 @@ private fun BookInfoScreen( } if (state.value.showConfirmUpdateDialog) { BookInfoConfirmUpdateDialog( - state = state, snackbarHostState = snackbarState, onEvent = onEvent, onLibraryUpdateEvent = onLibraryEvent, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/confirm_update_dialog/BookInfoConfirmUpateDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/confirm_update_dialog/BookInfoConfirmUpateDialog.kt index f30a9292..4ef6b8d2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/confirm_update_dialog/BookInfoConfirmUpateDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/confirm_update_dialog/BookInfoConfirmUpateDialog.kt @@ -4,22 +4,25 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Update import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable -import androidx.compose.runtime.State import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R -import ua.acclorite.book_story.presentation.components.custom_dialog.CustomDialogWithLazyColumn +import ua.acclorite.book_story.presentation.components.custom_dialog.CustomDialogWithContent import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoEvent -import ua.acclorite.book_story.presentation.screens.book_info.data.BookInfoState import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent /** - * Confirm update dialog. Updates book if action clicked. + * Confirm update dialog. + * Updates book if action clicked. + * + * @param snackbarHostState [SnackbarHostState]. + * @param onEvent [BookInfoEvent] callback. + * @param onLibraryUpdateEvent [LibraryEvent] callback. + * @param onHistoryUpdateEvent [HistoryEvent] callback. */ @Composable fun BookInfoConfirmUpdateDialog( - state: State, snackbarHostState: SnackbarHostState, onEvent: (BookInfoEvent) -> Unit, onLibraryUpdateEvent: (LibraryEvent.OnUpdateBook) -> Unit, @@ -27,7 +30,7 @@ fun BookInfoConfirmUpdateDialog( ) { val context = LocalContext.current - CustomDialogWithLazyColumn( + CustomDialogWithContent( title = stringResource(id = R.string.confirm_update), imageVectorIcon = Icons.Default.Update, description = stringResource( @@ -48,24 +51,7 @@ fun BookInfoConfirmUpdateDialog( ) ) }, - withDivider = false, - items = { - if (state.value.authorChanged) { - item { - BookInfoConfirmUpdateDialogItem(title = stringResource(id = R.string.author)) - } - } - if (state.value.descriptionChanged) { - item { - BookInfoConfirmUpdateDialogItem(title = stringResource(id = R.string.description)) - } - } - if (state.value.textChanged) { - item { - BookInfoConfirmUpdateDialogItem(title = stringResource(id = R.string.text)) - } - } - } + withDivider = false ) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoEvent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoEvent.kt index 4833b12e..f3402937 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoEvent.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoEvent.kt @@ -76,10 +76,7 @@ sealed class BookInfoEvent { data object OnDismissConfirmUpdateDialog : BookInfoEvent() data class OnShowConfirmUpdateDialog( - val updatedBook: Pair>, - val authorUpdated: Boolean, - val descriptionUpdated: Boolean, - val textUpdated: Boolean, + val updatedText: List ) : BookInfoEvent() data object OnCancelUpdate : BookInfoEvent() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoState.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoState.kt index 8544c4b0..3fb63329 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoState.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoState.kt @@ -12,10 +12,7 @@ data class BookInfoState( val isLoadingUpdate: Boolean = false, val isRefreshing: Boolean = false, val showConfirmUpdateDialog: Boolean = false, - val updatedBook: Pair>? = null, - val authorChanged: Boolean = false, - val descriptionChanged: Boolean = false, - val textChanged: Boolean = false, + val updatedText: List? = null, val editTitle: Boolean = false, val hasTitleFocused: Boolean = false, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt index 2a8983ef..8620b2cb 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/data/BookInfoViewModel.kt @@ -529,20 +529,8 @@ class BookInfoViewModel @Inject constructor( val book = _state.value.book - var authorUpdated = false - var descriptionUpdated = false var textUpdated = false - if ( - updatedBook.book!!.author.asString(event.context) != - book.author.asString(event.context) - ) { - authorUpdated = true - } - if (updatedBook.book.description != book.description) { - descriptionUpdated = true - } - val updatedText = updatedBook.text val text = getText.execute(book.textPath) @@ -551,7 +539,7 @@ class BookInfoViewModel @Inject constructor( } yield() - if (!authorUpdated && !descriptionUpdated && !textUpdated) { + if (!textUpdated) { onEvent( BookInfoEvent.OnShowSnackbar( event.context.getString(R.string.nothing_changed), @@ -572,10 +560,7 @@ class BookInfoViewModel @Inject constructor( yield() onEvent( BookInfoEvent.OnShowConfirmUpdateDialog( - updatedBook = updatedBook.book to updatedBook.text, - authorUpdated = authorUpdated, - descriptionUpdated = descriptionUpdated, - textUpdated = textUpdated + updatedText = updatedBook.text, ) ) @@ -591,10 +576,7 @@ class BookInfoViewModel @Inject constructor( _state.update { it.copy( showConfirmUpdateDialog = false, - updatedBook = null, - authorChanged = false, - descriptionChanged = false, - textChanged = false + updatedText = null ) } } @@ -603,10 +585,7 @@ class BookInfoViewModel @Inject constructor( _state.update { it.copy( showConfirmUpdateDialog = true, - updatedBook = event.updatedBook, - authorChanged = event.authorUpdated, - descriptionChanged = event.descriptionUpdated, - textChanged = event.textUpdated + updatedText = event.updatedText ) } } @@ -620,7 +599,7 @@ class BookInfoViewModel @Inject constructor( ) } - if (_state.value.updatedBook == null) { + if (_state.value.updatedText == null) { onEvent( BookInfoEvent.OnShowSnackbar( text = event.context.getString( @@ -648,111 +627,75 @@ class BookInfoViewModel @Inject constructor( return@launch } - val book = _state.value.book - val updatedBook = _state.value.updatedBook ?: return@launch + val updatedText = _state.value.updatedText ?: return@launch + val isSuccess = updateBookWithText.execute( + book = _state.value.book, + text = updatedText + ) - val author = if (_state.value.authorChanged) { - updatedBook.first.author - } else { - book.author + if (!isSuccess) { + onEvent( + BookInfoEvent.OnShowSnackbar( + text = event.context.getString( + R.string.error_something_went_wrong_with_file + ), + action = event.context.getString(R.string.retry), + onAction = { + onEvent( + BookInfoEvent.OnLoadUpdate( + snackbarState = event.snackbarState, + context = event.context + ) + ) + }, + durationMillis = 4000L, + snackbarState = event.snackbarState + ) + ) + delay(500) + _state.update { + it.copy( + isRefreshing = false + ) + } + return@launch } - val description = if (_state.value.descriptionChanged) { - updatedBook.first.description - } else { - book.description + + val newBook = getBookById.execute(_state.value.book.id) + if (newBook == null) { + onEvent( + BookInfoEvent.OnShowSnackbar( + text = event.context.getString( + R.string.error_something_went_wrong_with_file + ), + action = event.context.getString(R.string.retry), + onAction = { + onEvent( + BookInfoEvent.OnLoadUpdate( + snackbarState = event.snackbarState, + context = event.context + ) + ) + }, + durationMillis = 4000L, + snackbarState = event.snackbarState + ) + ) + delay(500) + _state.update { + it.copy( + isRefreshing = false + ) + } + return@launch } _state.update { it.copy( - book = it.book.copy( - author = author, - description = description - ) + book = newBook, + updatedText = null ) } - - if (_state.value.textChanged) { - val isSuccess = updateBookWithText.execute( - book = _state.value.book, - text = updatedBook.second - ) - - if (!isSuccess) { - onEvent( - BookInfoEvent.OnShowSnackbar( - text = event.context.getString( - R.string.error_something_went_wrong_with_file - ), - action = event.context.getString(R.string.retry), - onAction = { - onEvent( - BookInfoEvent.OnLoadUpdate( - snackbarState = event.snackbarState, - context = event.context - ) - ) - }, - durationMillis = 4000L, - snackbarState = event.snackbarState - ) - ) - delay(500) - _state.update { - it.copy( - isRefreshing = false - ) - } - return@launch - } - } else { - updateBooks.execute( - listOf( - _state.value.book - ) - ) - } - - if (_state.value.textChanged) { - val newBook = getBookById.execute(_state.value.book.id) - - if (newBook == null) { - onEvent( - BookInfoEvent.OnShowSnackbar( - text = event.context.getString( - R.string.error_something_went_wrong_with_file - ), - action = event.context.getString(R.string.retry), - onAction = { - onEvent( - BookInfoEvent.OnLoadUpdate( - snackbarState = event.snackbarState, - context = event.context - ) - ) - }, - durationMillis = 4000L, - snackbarState = event.snackbarState - ) - ) - delay(500) - _state.update { - it.copy( - isRefreshing = false - ) - } - return@launch - } - - _state.update { - it.copy( - book = newBook, - authorChanged = false, - descriptionChanged = false, - textChanged = false, - updatedBook = null - ) - } - } event.refreshList(_state.value.book) onEvent( diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 99cd8b12..02e29f75 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -70,9 +70,8 @@ Після видалення всієї історії порядок книг буде скинутий. - При підтвердженні ця книга буде оновлена. + При підтвердженні текст цієї книги буде оновлений. Будь ласка, запам\'ятайте де ви зупинилися перед оновленням тексту. - Наступне буде оновлено: Нова версія Історії Книги була знайдена. @@ -301,8 +300,8 @@ Елемент історії був успішно видалений. Файл \"%1$s\" не знайдено. - Текст, автор та опис книги були успішно оновлені. - Книга актуальна. + Текст книги був успішно оновлений. + Текст книги актуальний. Перемістити diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3eb2b50c..a49a9aef 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -89,9 +89,8 @@ After deleting the whole history, the order of the books will be reset. - By confirming this book will be updated. + By confirming this book\'s text will be updated. Please remember where you left before updating text. - Following will be updated: New version of Book\'s Story was found. @@ -321,8 +320,8 @@ History element was successfully deleted. File \"%1$s\" was not found. - Book text, author and description were successfully updated. - Book is up to date. + Book\'s text was successfully updated. + Book\'s text is up to date. Move