Skip to content

Commit

Permalink
Merge pull request #364 from aritra-tech/develop
Browse files Browse the repository at this point in the history
Optimization and bug fixes
  • Loading branch information
aritra-tech committed Feb 28, 2024
2 parents 8d4275b + a808b74 commit 7a69559
Show file tree
Hide file tree
Showing 20 changed files with 125 additions and 200 deletions.
12 changes: 6 additions & 6 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 @@ -38,8 +38,8 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.aritra.notify.R
import com.aritra.notify.domain.models.ReminderDateTimeModel
import com.aritra.notify.domain.models.formatToLocalDateTime
import com.aritra.notify.utils.ReminderDateTimeModel
import com.aritra.notify.utils.formatToLocalDateTime
import com.aritra.notify.utils.Const
import com.aritra.notify.utils.checkDateIsNotOld
import com.aritra.notify.utils.checkTimeIsNotOld
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import androidx.room.Dao
import androidx.room.Query
import androidx.room.Transaction
import androidx.room.Upsert
import com.aritra.notify.data.relations.TrashNoteWithNotes
import com.aritra.notify.domain.models.TrashNoteWithNotes
import com.aritra.notify.domain.models.TrashNote

@Dao
Expand Down
5 changes: 0 additions & 5 deletions app/src/main/java/com/aritra/notify/domain/models/Note.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,3 @@ data class Note(
var reminderDateTime: LocalDateTime? = null,
var isReminded: Boolean = false,
) : Parcelable

data class ReminderDateTimeInfo(
val dateTime: LocalDateTime,
val isReminded: Boolean,
)
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package com.aritra.notify.data.relations
package com.aritra.notify.domain.models

import androidx.room.Embedded
import androidx.room.Relation
import com.aritra.notify.domain.models.Note
import com.aritra.notify.domain.models.TrashNote

data class TrashNoteWithNotes(
@Embedded val trashNote: TrashNote,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.aritra.notify.domain.repository.trash

import com.aritra.notify.data.relations.TrashNoteWithNotes
import com.aritra.notify.domain.models.TrashNoteWithNotes
import com.aritra.notify.domain.models.TrashNote
import java.time.LocalDateTime

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.aritra.notify.domain.repository.trash

import com.aritra.notify.data.dao.TrashNoteDao
import com.aritra.notify.data.relations.TrashNoteWithNotes
import com.aritra.notify.domain.models.TrashNoteWithNotes
import com.aritra.notify.domain.models.TrashNote
import java.time.LocalDateTime
import java.time.temporal.ChronoUnit
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.aritra.notify.navigation

import androidx.annotation.DrawableRes
import androidx.compose.ui.graphics.vector.ImageVector

data class BottomNavItem(
val name: String,
val route: String,
@DrawableRes val icon: Int,
val icon: ImageVector,
)
117 changes: 43 additions & 74 deletions app/src/main/java/com/aritra/notify/navigation/NotifyApp.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
package com.aritra.notify.navigation

import android.widget.Toast
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.LinearOutSlowInEasing
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.scaleIn
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Icon
Expand All @@ -20,17 +14,16 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.vectorResource
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.NavGraph.Companion.findStartDestination
import androidx.navigation.NavHostController
import androidx.navigation.NavType.Companion.IntType
import androidx.navigation.compose.NavHost
Expand All @@ -39,31 +32,29 @@ 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.notes.addEditScreen.AddEditRoute
import com.aritra.notify.ui.screens.notes.addEditScreen.route.AddEditRoute
import com.aritra.notify.ui.screens.notes.homeScreen.NoteScreen
import com.aritra.notify.ui.screens.notes.trash.TrashNoteEffect
import com.aritra.notify.ui.screens.notes.trash.TrashNoteScreen
import com.aritra.notify.ui.screens.notes.trash.TrashNoteViewModel
import com.aritra.notify.ui.screens.settingsScreen.SettingsScreen
import com.aritra.notify.ui.theme.FadeIn
import com.aritra.notify.ui.theme.FadeOut

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

var shouldHideBottomBar: Boolean by remember {
mutableStateOf(true)
}
val backStackEntry = navController.currentBackStackEntryAsState()
val trashViewModel = hiltViewModel<TrashNoteViewModel>()
val state by trashViewModel.state.collectAsState()
val effect by trashViewModel.effect.collectAsState()
val context = LocalContext.current

LaunchedEffect(key1 = effect) {
LaunchedEffect(effect) {
effect?.let {
when (it) {
TrashNoteEffect.Close -> {
Expand All @@ -81,46 +72,21 @@ fun NotifyApp(navController: NavHostController = rememberNavController()) {

Scaffold(
bottomBar = {
AnimatedVisibility(
visible = shouldHideBottomBar,
enter = fadeIn(animationSpec = tween(delayMillis = 500, easing = LinearOutSlowInEasing)),
exit = fadeOut(animationSpec = tween(delayMillis = 500, easing = LinearOutSlowInEasing))
) {
BottomNavigationBar(
backStackEntry,
bottomNavItem,
screensWithHiddenNavBar,
navController
)
}
BottomNavigationBar(
backStackEntry,
screensWithHiddenNavBar,
navController
)
}
) { scaffoldPadding ->
NavHost(
navController = navController,
startDestination = NotifyScreens.Notes.name,
modifier = Modifier.padding(scaffoldPadding),
enterTransition = {
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)
)
},
popExitTransition = {
fadeOut(animationSpec = tween(90))
}
enterTransition = { FadeIn },
exitTransition = { FadeOut },
popEnterTransition = { FadeIn },
popExitTransition = { FadeOut }
) {
composable(
route = NotifyScreens.Notes.name
Expand All @@ -130,9 +96,7 @@ fun NotifyApp(navController: NavHostController = rememberNavController()) {
navigateToUpdateNoteScreen = { noteId ->
navController.navigate("${NotifyScreens.AddEditNotes.name}/$noteId")
}
) { shouldHide ->
shouldHideBottomBar = shouldHide
}
)
}

composable(
Expand Down Expand Up @@ -163,18 +127,33 @@ fun NotifyApp(navController: NavHostController = rememberNavController()) {
@Composable
fun BottomNavigationBar(
backStackEntry: State<NavBackStackEntry?>,
bottomNavItem: List<BottomNavItem>,
screensWithHiddenNavBar: List<String>,
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)
) {
val bottomNavItem = listOf(
BottomNavItem(
name = "Notes",
route = NotifyScreens.Notes.name,
icon = ImageVector.vectorResource(R.drawable.note_outline)
),
BottomNavItem(
name = "Settings",
route = NotifyScreens.Settings.name,
icon = ImageVector.vectorResource(R.drawable.settings_outline)
)
)

bottomNavItem.forEach { item ->
NavigationBarItem(
alwaysShowLabel = true,
icon = {
Icon(
painter = painterResource(id = item.icon),
imageVector = item.icon,
contentDescription = item.name,
tint = if (backStackEntry.value?.destination?.route == item.route) {
MaterialTheme.colorScheme.onSurface
Expand All @@ -192,7 +171,7 @@ fun BottomNavigationBar(
MaterialTheme.colorScheme.secondary
},
fontWeight = if (backStackEntry.value?.destination?.route == item.route) {
FontWeight.Bold
FontWeight.SemiBold
} else {
FontWeight.Normal
}
Expand All @@ -203,8 +182,13 @@ fun BottomNavigationBar(
val currentDestination = navController.currentBackStackEntry?.destination?.route
if (item.route != currentDestination) {
navController.navigate(item.route) {
popUpTo(navController.graph.startDestinationId)
navController.graph.findStartDestination().let { route ->
popUpTo(route.id) {
saveState = true
}
}
launchSingleTop = true
restoreState = true
}
}
}
Expand All @@ -213,18 +197,3 @@ fun BottomNavigationBar(
}
}
}

fun getBottomNavItems(): List<BottomNavItem> {
return listOf(
BottomNavItem(
name = "Notes",
route = NotifyScreens.Notes.name,
icon = R.drawable.note_outline
),
BottomNavItem(
name = "Settings",
route = NotifyScreens.Settings.name,
icon = R.drawable.settings_outline
)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ import com.aritra.notify.components.dialog.TextDialog
import com.aritra.notify.components.drawing.DrawingScreen
import com.aritra.notify.domain.models.Note
import com.aritra.notify.domain.models.Todo
import com.aritra.notify.ui.screens.notes.addEditScreen.components.DescriptionTextField
import com.aritra.notify.ui.screens.notes.addEditScreen.components.NoteChecklist
import com.aritra.notify.ui.screens.notes.addEditScreen.components.NoteImages
import com.aritra.notify.ui.screens.notes.addEditScreen.components.NoteStats
import com.aritra.notify.ui.theme.NotifyTheme
import com.aritra.notify.utils.formatReminderDateTime
import java.time.LocalDateTime
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.aritra.notify.ui.screens.notes.addEditScreen
package com.aritra.notify.ui.screens.notes.addEditScreen.components

import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.spring
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.aritra.notify.ui.screens.notes.addEditScreen
package com.aritra.notify.ui.screens.notes.addEditScreen.components

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.aritra.notify.ui.screens.notes.addEditScreen
package com.aritra.notify.ui.screens.notes.addEditScreen.components

import android.net.Uri
import androidx.compose.foundation.horizontalScroll
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.aritra.notify.ui.screens.notes.addEditScreen
package com.aritra.notify.ui.screens.notes.addEditScreen.components

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.aritra.notify.ui.screens.notes.addEditScreen
package com.aritra.notify.ui.screens.notes.addEditScreen.route

import android.net.Uri
import android.widget.Toast
Expand All @@ -13,6 +13,8 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavController
import com.aritra.notify.domain.models.Todo
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.NoteScreenViewModel
import java.time.LocalDateTime

Expand Down Expand Up @@ -79,7 +81,7 @@ fun AddEditRoute(
}
}

var rememberUpdateDateTime = remember {
val rememberUpdateDateTime = remember {
{ localDateTime: LocalDateTime? ->
viewModel.updateReminderDateTime(localDateTime)
}
Expand Down

0 comments on commit 7a69559

Please sign in to comment.