From cd7e8d6e1a517962667826a9162e64c3dbddd0d7 Mon Sep 17 00:00:00 2001 From: Manoj Bhadane Date: Wed, 4 Dec 2024 18:10:36 +0530 Subject: [PATCH 1/3] 1. Home grid empty space scroll issue fixed 2. Unable to click other notes post password bottomsheet dismiss --- app/src/main/java/com/an/notesapp/intent/NoteIntent.kt | 1 + .../java/com/an/notesapp/view/ui/screen/NotesScreen.kt | 7 +++++-- .../com/an/notesapp/view/ui/viewmodel/NoteViewModel.kt | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/an/notesapp/intent/NoteIntent.kt b/app/src/main/java/com/an/notesapp/intent/NoteIntent.kt index 6d8933d..5fe4501 100644 --- a/app/src/main/java/com/an/notesapp/intent/NoteIntent.kt +++ b/app/src/main/java/com/an/notesapp/intent/NoteIntent.kt @@ -14,4 +14,5 @@ sealed class NoteIntent { data class DeleteNote(val note: Note) : NoteIntent() data class OpenNoteClicked(val note: Note): NoteIntent() data class ValidatePassword(val password: String): NoteIntent() + data object DismissPasswordSheet : NoteIntent() } \ No newline at end of file diff --git a/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt b/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt index e6d614a..b2e237c 100644 --- a/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt +++ b/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -77,7 +78,7 @@ fun NotesScreen( } else { // Show notes screen LazyVerticalStaggeredGrid( - modifier = Modifier.padding(top = 10.dp, bottom = 10.dp, start = 12.dp, end = 12.dp), + modifier = Modifier.fillMaxSize().padding(top = 10.dp, bottom = 10.dp, start = 12.dp, end = 12.dp), horizontalArrangement = Arrangement.spacedBy(16.dp), columns = StaggeredGridCells.Adaptive(minSize = 140.dp), ) { @@ -97,7 +98,9 @@ fun NotesScreen( PasswordBottomSheet( isNoteLocked = true, errorMessageId = noteUiState.value.passwordErrorResId, - onDismissRequest = { noteUiState.value.copy(showPasswordSheet = false) }, + onDismissRequest = { + viewModel.handleIntent(NoteIntent.DismissPasswordSheet) + }, onDoneRequest = { viewModel.handleIntent(NoteIntent.ValidatePassword(it)) } diff --git a/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteViewModel.kt b/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteViewModel.kt index e6eeb0d..63db579 100644 --- a/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteViewModel.kt +++ b/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteViewModel.kt @@ -32,6 +32,9 @@ class NoteViewModel @Inject constructor( is NoteIntent.DeleteNote -> deleteNote(intent.note) is NoteIntent.OpenNoteClicked -> onNoteClicked(intent.note) is NoteIntent.ValidatePassword -> validatePassword(intent.password) + is NoteIntent.DismissPasswordSheet -> { + _notesViewState.value = _notesViewState.value.copy(showPasswordSheet = false) + } else -> { } } } From df7041ce53188ef66d988559740ddc1bc2b4ac6c Mon Sep 17 00:00:00 2001 From: Manoj Bhadane Date: Wed, 4 Dec 2024 18:12:53 +0530 Subject: [PATCH 2/3] Trimmed note title --- .../java/com/an/notesapp/view/ui/screen/NoteDetailScreen.kt | 3 +-- .../com/an/notesapp/view/ui/viewmodel/NoteDetailViewModel.kt | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/an/notesapp/view/ui/screen/NoteDetailScreen.kt b/app/src/main/java/com/an/notesapp/view/ui/screen/NoteDetailScreen.kt index 7b87e52..8f42fc0 100644 --- a/app/src/main/java/com/an/notesapp/view/ui/screen/NoteDetailScreen.kt +++ b/app/src/main/java/com/an/notesapp/view/ui/screen/NoteDetailScreen.kt @@ -49,8 +49,7 @@ fun NoteDetailScreen(viewModel: NoteDetailViewModel) { // Note title TextField( modifier = Modifier - .fillMaxWidth() - .padding(bottom = 20.dp), + .fillMaxWidth(), value = noteDetailViewState.value.note.title, onValueChange = { viewModel.handleIntent(NoteIntent.UpdateNoteTitle(it)) }, placeholder = { Text(stringResource(id = R.string.add_note_title)) }, diff --git a/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteDetailViewModel.kt b/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteDetailViewModel.kt index 52ba598..10d7225 100644 --- a/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteDetailViewModel.kt +++ b/app/src/main/java/com/an/notesapp/view/ui/viewmodel/NoteDetailViewModel.kt @@ -91,6 +91,7 @@ class NoteDetailViewModel @Inject constructor( fun addNote() { viewModelScope.launch(IO) { val note = _noteDetailViewState.value.note.copy( + title = _noteDetailViewState.value.note.title.trim(), createdAt = OffsetDateTime.now(), modifiedAt = OffsetDateTime.now() ) @@ -103,6 +104,7 @@ class NoteDetailViewModel @Inject constructor( fun saveNote() { viewModelScope.launch(IO) { val updatedNote = _noteDetailViewState.value.note.copy( + title = _noteDetailViewState.value.note.title.trim(), modifiedAt = OffsetDateTime.now() ) repository.updateNote(updatedNote) From 4aef4644d227b7069a2c1d9f44668b249b48e5e9 Mon Sep 17 00:00:00 2001 From: Manoj Bhadane Date: Wed, 4 Dec 2024 18:16:09 +0530 Subject: [PATCH 3/3] Editor and Note item UI/UX change --- .../notesapp/composetexteditor/editor/ComposeTextEditor.kt | 3 ++- .../java/com/an/notesapp/view/ui/screen/NotesScreen.kt | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/an/notesapp/composetexteditor/editor/ComposeTextEditor.kt b/app/src/main/java/com/an/notesapp/composetexteditor/editor/ComposeTextEditor.kt index ae0fac3..7c44f7b 100644 --- a/app/src/main/java/com/an/notesapp/composetexteditor/editor/ComposeTextEditor.kt +++ b/app/src/main/java/com/an/notesapp/composetexteditor/editor/ComposeTextEditor.kt @@ -1,5 +1,6 @@ package com.an.notesapp.composetexteditor.editor +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.text.BasicTextField import androidx.compose.runtime.* import androidx.compose.ui.Modifier @@ -60,7 +61,7 @@ fun ComposeTextEditor( }, textStyle = TextStyle(fontSize = 16.sp, color = Color.Black), cursorBrush = SolidColor(Color.Black), - modifier = modifier + modifier = modifier.fillMaxSize() ) } diff --git a/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt b/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt index b2e237c..a024c0e 100644 --- a/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt +++ b/app/src/main/java/com/an/notesapp/view/ui/screen/NotesScreen.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Lock @@ -28,6 +29,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.blur +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow @@ -80,6 +82,7 @@ fun NotesScreen( LazyVerticalStaggeredGrid( modifier = Modifier.fillMaxSize().padding(top = 10.dp, bottom = 10.dp, start = 12.dp, end = 12.dp), horizontalArrangement = Arrangement.spacedBy(16.dp), + verticalItemSpacing = 16.dp, columns = StaggeredGridCells.Adaptive(minSize = 140.dp), ) { val notes = noteUiState.value.notes @@ -121,9 +124,9 @@ fun NoteItem( ) { Card ( modifier = Modifier - .padding(bottom = 12.dp) + .clip(RoundedCornerShape(8.dp)) .clickable { onNoteItemClicked(note) }, - shape = RectangleShape, + shape = RoundedCornerShape(8.dp), elevation = CardDefaults.cardElevation(10.dp), colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.onPrimary