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
6 changes: 3 additions & 3 deletions app/src/main/java/com/stslex93/notes/ui/AppInit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.navigation.NavHostController
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.stslex93.notes.core.navigation.v2.controller.NavExtrasHostController

@Composable
fun AppInit(
navController: NavExtrasHostController,
navController: NavHostController,
modifier: Modifier = Modifier
) {
val systemUiController = rememberSystemUiController()
Expand All @@ -34,7 +34,7 @@ fun AppInit(
.background(MaterialTheme.colorScheme.background)
) {
NavigationHost(
navController = navController,
navHostController = navController,
modifier = modifier
)
}
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/stslex93/notes/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
import androidx.navigation.compose.rememberNavController
import com.stslex93.notes.core.navigation.di.NavigationComponentBuilder
import com.stslex93.notes.core.navigation.v2.controller.rememberNavExtrasController
import com.stslex93.notes.core.ui.di.MainUiApi
import com.stslex93.notes.core.ui.di.NavigationApi
import com.stslex93.notes.core.ui.theme.AppTheme
Expand All @@ -21,7 +21,7 @@ class MainActivity : AppCompatActivity(), MainUiApi {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
val navController = rememberNavExtrasController()
val navController = rememberNavController()
_navigationApi = NavigationComponentBuilder
.build(navController)
.also { api ->
Expand Down
15 changes: 9 additions & 6 deletions app/src/main/java/com/stslex93/notes/ui/NavigationHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,25 @@ package com.stslex93.notes.ui

import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.stslex93.notes.core.navigation.v2.compose.NavExtrasHost
import com.stslex93.notes.core.navigation.v2.controller.NavExtrasHostController
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import com.stslex93.notes.core.navigation.model.AppDestination
import com.stslex93.notes.feature.edit.ui.init.editGraph
import com.stslex93.notes.feature.edit_label.navigation.graph.editLabelGraph
import com.stslex93.notes.feature.home.navigation.homeGraph

@Composable
fun NavigationHost(
navController: NavExtrasHostController,
navHostController: NavHostController,
modifier: Modifier = Modifier,
startDestination: AppDestination = AppDestination.HOME
) {
NavExtrasHost(
navController = navController,
NavHost(
navController = navHostController,
startDestination = startDestination.route
) {
homeGraph(modifier)
editGraph(modifier)
editLabelGraph(modifier)
}
}
}
1 change: 0 additions & 1 deletion core/navigation/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
plugins {
id("notes.android.library")
id("notes.android.library.compose")
id("kotlin-parcelize")
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.stslex93.notes.core.navigation.di

import com.stslex93.notes.core.navigation.v2.controller.NavExtrasHostController
import androidx.navigation.NavHostController
import com.stslex93.notes.core.ui.di.NavigationApi
import dagger.BindsInstance
import dagger.Component
Expand All @@ -14,7 +14,7 @@ interface NavigationComponent : NavigationApi {
interface Builder {

@BindsInstance
fun controller(navController: NavExtrasHostController): Builder
fun controller(navHostController: NavHostController): Builder

fun build(): NavigationApi
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.stslex93.notes.core.navigation.di

import com.stslex93.notes.core.navigation.v2.controller.NavExtrasHostController
import androidx.navigation.NavHostController
import com.stslex93.notes.core.ui.di.NavigationApi

object NavigationComponentBuilder {

fun build(
navController: NavExtrasHostController
navHostController: NavHostController
): NavigationApi = DaggerNavigationComponent
.builder()
.controller(navController)
.controller(navHostController)
.build()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.stslex93.notes.core.navigation.di

import com.stslex93.notes.core.navigation.v2.navigator.NavigatorImpl
import com.stslex93.notes.core.navigation.navigator.NavigatorImpl
import com.stslex93.notes.core.ui.di.Navigator
import dagger.Binds
import dagger.Module
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,42 @@ package com.stslex93.notes.core.navigation.model

import com.stslex93.notes.core.ui.di.Screen

//sealed class NavigationScreen : Screen {
//
// abstract val screen: AppDestination
//
// val screenRoute: String
// get() = "${screen.route}${appArgs.argumentsForRoute}"
//
// open val isSingleTop: Boolean
// get() = false
//
// open val appArgs: AppArguments
// get() = AppArguments.Empty
//
// data object HomeScreen : NavigationScreen() {
// override val screen: AppDestination = AppDestination.HOME
// override val isSingleTop: Boolean = true
// }
//
// data class EditNoteScreen(
// private val noteId: Int,
// private val isEdit: Boolean
// ) : NavigationScreen() {
// override val screen: AppDestination = AppDestination.NOTE_EDIT
// override val appArgs: AppArguments = AppArguments.NoteEdit(noteId, isEdit)
// }
//
// data class EditLabelScreen(
// private val noteIds: Set<Int>
// ) : NavigationScreen() {
// override val screen = AppDestination.LABEL_EDIT
// override val appArgs = AppArguments.LabelEdit(noteIds)
// }
//
// data object PopBackStack : NavigationScreen() {
//
// override val screen: AppDestination = AppDestination.UNDEFINED
// override val appArgs: AppArguments = AppArguments.Empty
// }
//}
sealed class NavigationScreen : Screen {

abstract val screen: AppDestination

val screenRoute: String
get() = "${screen.route}${appArgs.argumentsForRoute}"

open val isSingleTop: Boolean
get() = false

open val appArgs: AppArguments
get() = AppArguments.Empty

data object HomeScreen : NavigationScreen() {
override val screen: AppDestination = AppDestination.HOME
override val isSingleTop: Boolean = true
}

data class EditNoteScreen(
private val noteId: Int,
private val isEdit: Boolean
) : NavigationScreen() {
override val screen: AppDestination = AppDestination.NOTE_EDIT
override val appArgs: AppArguments = AppArguments.NoteEdit(noteId, isEdit)
}

data class EditLabelScreen(
private val noteIds: Set<Int>
) : NavigationScreen() {
override val screen = AppDestination.LABEL_EDIT
override val appArgs = AppArguments.LabelEdit(noteIds)
}

data object PopBackStack : NavigationScreen() {

override val screen: AppDestination = AppDestination.UNDEFINED
override val appArgs: AppArguments = AppArguments.Empty
}
}
Original file line number Diff line number Diff line change
@@ -1,31 +1,38 @@
package com.stslex93.notes.core.navigation.navigator

//class NavigatorImpl @Inject constructor(
// private val navController: NavHostController
//) : Navigator {
//
// override fun invoke(screen: Screen) {
// when (screen) {
// is NavigationScreen.PopBackStack -> navController.popBackStack()
// is NavigationScreen -> navigateScreen(screen)
// else -> {
// Logger.debug("unresolve navigation route", this::class.simpleName)
// }
// }
// }
//
// private fun navigateScreen(screen: NavigationScreen) {
// val currentRoute = navController.currentDestination?.route ?: return
// if (currentRoute == screen.screen.navigationRoute) return
//
// navController.navigate(screen.screenRoute) {
// if (screen.isSingleTop.not()) return@navigate
//
// popUpTo(currentRoute) {
// inclusive = true
// saveState = true
// }
// launchSingleTop = true
// }
// }
//}
import androidx.navigation.NavHostController
import com.stslex.aproselection.core.core.Logger
import com.stslex93.notes.core.navigation.model.NavigationScreen
import com.stslex93.notes.core.ui.di.Navigator
import com.stslex93.notes.core.ui.di.Screen
import javax.inject.Inject

class NavigatorImpl @Inject constructor(
private val navController: NavHostController
) : Navigator {

override fun invoke(screen: Screen) {
when (screen) {
is NavigationScreen.PopBackStack -> navController.popBackStack()
is NavigationScreen -> navigateScreen(screen)
else -> {
Logger.debug("unresolve navigation route", this::class.simpleName)
}
}
}

private fun navigateScreen(screen: NavigationScreen) {
val currentRoute = navController.currentDestination?.route ?: return
if (currentRoute == screen.screen.navigationRoute) return

navController.navigate(screen.screenRoute) {
if (screen.isSingleTop.not()) return@navigate

popUpTo(currentRoute) {
inclusive = true
saveState = true
}
launchSingleTop = true
}
}
}

This file was deleted.

This file was deleted.

Loading