Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 18 additions & 12 deletions .idea/deploymentTargetDropDown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import com.aritra.notify.domain.models.Note
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.aritra.notify.R
import com.aritra.notify.components.actions.ShareOption
import com.aritra.notify.components.dialog.TextDialog
import com.aritra.notify.domain.models.Note
import com.aritra.notify.ui.screens.notes.homeScreen.NoteScreenViewModel
import com.aritra.notify.utils.shareAsImage
import com.aritra.notify.utils.shareAsPdf
Expand All @@ -42,9 +42,8 @@ import com.aritra.notify.utils.shareNoteAsText
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AddEditTopBar(
note: Note?,
title: String,
description: String,
note: Note,
isNew: Boolean,
onBackPress: () -> Unit,
saveNote: () -> Unit,
updateNote: () -> Unit,
Expand All @@ -61,10 +60,10 @@ fun AddEditTopBar(
val deleteDialogVisible = remember { mutableStateOf(false) }

BackHandler(onBack = {
if (note != null) {
updateNote()
} else {
if (isNew) {
onBackPress()
} else {
updateNote()
}
})

Expand All @@ -80,10 +79,10 @@ fun AddEditTopBar(
},
navigationIcon = {
IconButton(onClick = {
if (note != null) {
updateNote()
} else {
if (isNew) {
onBackPress()
} else {
updateNote()
}
}) {
Icon(
Expand All @@ -93,7 +92,7 @@ fun AddEditTopBar(
}
},
actions = {
note?.let {
if (!isNew) {
IconButton(onClick = { deleteDialogVisible.value = true }) {
Icon(
painter = painterResource(R.drawable.ic_delete),
Expand All @@ -117,7 +116,7 @@ fun AddEditTopBar(
)
}
}
if (title.isNotEmpty() && description.isNotEmpty()) {
if (note.title.isNotEmpty() && note.note.isNotEmpty()) {
IconButton(onClick = { showSheet = true }) {
Icon(
painterResource(R.drawable.ic_share),
Expand All @@ -140,7 +139,7 @@ fun AddEditTopBar(
text = stringResource(R.string.share_note_as_text),
icon = painterResource(id = R.drawable.text_icon),
onClick = {
shareNoteAsText(context, title, description)
shareNoteAsText(context, note.title, note.note)
showSheet = false
}
)
Expand All @@ -166,10 +165,10 @@ fun AddEditTopBar(
}
}
IconButton(onClick = {
if (note != null) {
updateNote()
} else {
if (isNew) {
saveNote()
} else {
updateNote()
}
}) {
Icon(
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/aritra/notify/data/dao/NoteDao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ interface NoteDao {
suspend fun deleteNoteById(noteId: Int)

@Query("SELECT * FROM note WHERE id = :noteId")
fun getNoteByIdFlow(noteId: Int): Flow<Note>
fun getNoteByIdFlow(noteId: Int): Flow<Note?>

@Query("SELECT * FROM note WHERE id = :noteId")
fun getNoteById(noteId: Int): Note?
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/java/com/aritra/notify/domain/models/Note.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import java.util.Date
data class Note(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var title: String,
var note: String,
var dateTime: Date?,
var image: List<Uri?>,
var title: String = "",
var note: String = "",
var dateTime: Date? = null,
var image: List<Uri?> = emptyList(),
@ColumnInfo(defaultValue = "false")
var isMovedToTrash: Boolean = false,
) : Parcelable
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,13 @@ class NoteRepository @Inject constructor(application: Application) {
}
fun getAllNotesFromRoom(): Flow<List<Note>> = noteDao.getAllNotes()

fun getNoteByIdFromRoom(noteId: Int): Flow<Note> = noteDao.getNoteByIdFlow(noteId)
fun getNoteByIdFromRoom(noteId: Int): Flow<Note?> = noteDao.getNoteByIdFlow(noteId)

suspend fun insertNoteToRoom(note: Note): Long = noteDao.insertNote(note)

suspend fun insertListOfNotesToRoom(notes: List<Note>): List<Long> = noteDao.insertListOfNotes(notes)
fun getNoteById(noteId: Int): Note? {
return noteDao.getNoteById(noteId)
}
fun getNoteById(noteId: Int): Note? = noteDao.getNoteById(noteId)

suspend fun updateNoteInRoom(note: Note) = noteDao.updateNote(note)

suspend fun deleteNoteFromRoom(note: Note) = noteDao.deleteNote(note)
Expand Down
72 changes: 51 additions & 21 deletions app/src/main/java/com/aritra/notify/navigation/NotifyApp.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.aritra.notify.navigation

import android.net.Uri
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.FastOutLinearInEasing
import androidx.compose.animation.core.FastOutSlowInEasing
import androidx.compose.animation.core.LinearOutSlowInEasing
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
Expand All @@ -17,6 +16,7 @@ import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
Expand All @@ -27,6 +27,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavHostController
import androidx.navigation.NavType.Companion.IntType
Expand All @@ -36,17 +37,20 @@ import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.aritra.notify.R
import com.aritra.notify.ui.screens.drawing.DrawingScreen
import com.aritra.notify.ui.screens.notes.addEditScreen.AddEditScreen
import com.aritra.notify.ui.screens.notes.addEditScreen.AddEditViewModel
import com.aritra.notify.ui.screens.notes.homeScreen.NoteScreen
import com.aritra.notify.ui.screens.settingsScreen.SettingsScreen
import com.aritra.notify.ui.screens.notes.trash.trashNoteDest
import com.aritra.notify.ui.screens.settingsScreen.SettingsScreen

@Composable
fun NotifyApp(navController: NavHostController = rememberNavController()) {
val bottomNavItem = getBottomNavItems()
val screensWithHiddenNavBar = listOf(
"${NotifyScreens.AddEditNotes.name}/{noteId}",
NotifyScreens.TrashNoteScreen.name
NotifyScreens.TrashNoteScreen.name,
NotifyScreens.Drawing.name
)
val backStackEntry = navController.currentBackStackEntryAsState()

Expand Down Expand Up @@ -75,31 +79,33 @@ fun NotifyApp(navController: NavHostController = rememberNavController()) {
startDestination = NotifyScreens.Notes.name,
modifier = Modifier.padding(it),
enterTransition = {
fadeIn(animationSpec = tween(220, delayMillis = 90)) +
scaleIn(
initialScale = 0.92f,
animationSpec = tween(220, delayMillis = 90)
)
fadeIn(
animationSpec = tween(220, delayMillis = 90)
) + scaleIn(
initialScale = 0.92f,
animationSpec = tween(220, delayMillis = 90)
)
},
exitTransition = {
fadeOut(animationSpec = tween(90))
},
popEnterTransition = {
fadeIn(animationSpec = tween(220, delayMillis = 90)) +
scaleIn(
initialScale = 0.92f,
animationSpec = tween(220, delayMillis = 90)
)
fadeIn(
animationSpec = tween(220, delayMillis = 90)
) + scaleIn(
initialScale = 0.92f,
animationSpec = tween(220, delayMillis = 90)
)
},
popExitTransition = {
fadeOut(animationSpec = tween(90))
},
}
) {
composable(
route = NotifyScreens.Notes.name,
route = NotifyScreens.Notes.name
) {
NoteScreen(
onFabClicked = { navController.navigate(NotifyScreens.AddEditNotes.name + "/0") },
onFabClicked = { navController.navigate(NotifyScreens.AddEditNotes.name + "/-1") },
navigateToUpdateNoteScreen = { noteId ->
navController.navigate("${NotifyScreens.AddEditNotes.name}/$noteId")
}
Expand All @@ -113,18 +119,42 @@ fun NotifyApp(navController: NavHostController = rememberNavController()) {
arguments = listOf(navArgument("noteId") { type = IntType })
) { backStack ->
val noteId = backStack.arguments?.getInt("noteId") ?: 0
val viewModel = hiltViewModel<AddEditViewModel>()
val drawing = backStack.savedStateHandle.get<Uri?>("drawing")

LaunchedEffect(drawing) {
if (drawing != null) {
viewModel.addImages(drawing)
}
}

AddEditScreen(
noteId = noteId,
navigateBack = { navController.popBackStack() }
noteId = if (noteId < 0) null else noteId,
navigateBack = { navController.popBackStack() },
showDrawingScreen = { navController.navigate(NotifyScreens.Drawing.name) }
)
}

composable(
route = NotifyScreens.Settings.name,
route = NotifyScreens.Settings.name
) {
SettingsScreen(controller = navController)
}
trashNoteDest(navController)

composable(
route = NotifyScreens.Drawing.name
) {
DrawingScreen(
onBack = {
navController.popBackStack()
},
onSave = { drawing ->
navController.popBackStack()
navController.currentBackStackEntry?.savedStateHandle?.set("drawing", drawing)
}
)
}
}
}
}
Expand All @@ -137,7 +167,7 @@ fun BottomNavigationBar(
navController: NavHostController,
) {
if (backStackEntry.value?.destination?.route !in screensWithHiddenNavBar) {
NavigationBar(containerColor = Color.Transparent,modifier = Modifier.height(75.dp)) {
NavigationBar(containerColor = Color.Transparent, modifier = Modifier.height(75.dp)) {
bottomNavItem.forEach { item ->
NavigationBarItem(
alwaysShowLabel = true,
Expand Down
12 changes: 7 additions & 5 deletions app/src/main/java/com/aritra/notify/navigation/NotifyScreens.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package com.aritra.notify.navigation

sealed class NotifyScreens(val name: String) {

object Notes : NotifyScreens("notes")
object AddEditNotes : NotifyScreens("add_edit_note")
object TodoHome : NotifyScreens("todo_home")
object Settings : NotifyScreens("setting")
object TrashNoteScreen : NotifyScreens("trash_note_route")
data object Notes : NotifyScreens("notes")
data object AddEditNotes : NotifyScreens("add_edit_note")
data object TodoHome : NotifyScreens("todo_home")
data object Settings : NotifyScreens("setting")
data object TrashNoteScreen : NotifyScreens("trash_note_route")

data object Drawing : NotifyScreens("drawing")
}
Loading