diff --git a/app/src/main/java/ru/fincode/tsudesk/di/NetworkDebugModule.kt b/app/src/main/java/ru/fincode/tsudesk/di/AppConfigModule.kt similarity index 100% rename from app/src/main/java/ru/fincode/tsudesk/di/NetworkDebugModule.kt rename to app/src/main/java/ru/fincode/tsudesk/di/AppConfigModule.kt diff --git a/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainNavUi.kt b/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainNavUi.kt index befad99..122b6a4 100644 --- a/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainNavUi.kt +++ b/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainNavUi.kt @@ -1,37 +1,32 @@ -package ru.fincode.tsudesk.app.presentation.main +package ru.fincode.tsudesk.presentation.main import androidx.navigation.NavBackStackEntry +import androidx.navigation.NavDestination +import androidx.navigation.NavDestination.Companion.hasRoute import ru.fincode.tsudesk.core.navigation.AppRoute import ru.fincode.tsudesk.core.navigation.TopLevelDestination -import ru.fincode.tsudesk.core.navigation.route fun selectedTopLevel(entry: NavBackStackEntry?): TopLevelDestination { - if (entry == null) return TopLevelDestination.SCHEDULE + val dest: NavDestination = entry?.destination ?: return TopLevelDestination.SCHEDULE - return runCatching { - when (entry.route()) { - AppRoute.Schedule, - is AppRoute.ScheduleDetails -> TopLevelDestination.SCHEDULE + return when { + dest.hasRoute() || dest.hasRoute() -> + TopLevelDestination.SCHEDULE - AppRoute.News, - is AppRoute.NewsDetails -> TopLevelDestination.NEWS + dest.hasRoute() || dest.hasRoute() -> + TopLevelDestination.NEWS - AppRoute.Progress -> TopLevelDestination.PROGRESS + dest.hasRoute() -> + TopLevelDestination.PROGRESS - AppRoute.Settings -> TopLevelDestination.SETTINGS + dest.hasRoute() -> + TopLevelDestination.SETTINGS - else -> TopLevelDestination.SCHEDULE - } - }.getOrDefault(TopLevelDestination.SCHEDULE) + else -> TopLevelDestination.SCHEDULE + } } fun shouldShowBottomBar(entry: NavBackStackEntry?): Boolean { - if (entry == null) return false - - return runCatching { - when (entry.route()) { - AppRoute.Splash -> false - else -> true - } - }.getOrDefault(true) + val dest: NavDestination = entry?.destination ?: return false + return !dest.hasRoute() } \ No newline at end of file diff --git a/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainScaffold.kt b/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainScaffold.kt index 0b3c5b0..a5d7baf 100644 --- a/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainScaffold.kt +++ b/app/src/main/java/ru/fincode/tsudesk/presentation/main/MainScaffold.kt @@ -12,8 +12,6 @@ import androidx.navigation.compose.currentBackStackEntryAsState import ru.fincode.core.ui.components.BottomBarItem import ru.fincode.core.ui.components.TsudeskBottomBar import ru.fincode.tsudesk.R -import ru.fincode.tsudesk.app.presentation.main.selectedTopLevel -import ru.fincode.tsudesk.app.presentation.main.shouldShowBottomBar import ru.fincode.tsudesk.core.navigation.TopLevelDestination import ru.fincode.tsudesk.core.navigation.navigateToTopLevel diff --git a/app/src/main/java/ru/fincode/tsudesk/presentation/main/TopLevelItem.kt b/app/src/main/java/ru/fincode/tsudesk/presentation/main/TopLevelItem.kt index 323d188..408eb0c 100644 --- a/app/src/main/java/ru/fincode/tsudesk/presentation/main/TopLevelItem.kt +++ b/app/src/main/java/ru/fincode/tsudesk/presentation/main/TopLevelItem.kt @@ -2,7 +2,6 @@ package ru.fincode.tsudesk.presentation.main import androidx.annotation.StringRes import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.graphics.vector.ImageVector import ru.fincode.tsudesk.core.navigation.TopLevelDestination data class TopLevelItem( diff --git a/app/src/main/java/ru/fincode/tsudesk/presentation/navigation/AppNavHost.kt b/app/src/main/java/ru/fincode/tsudesk/presentation/navigation/AppNavHost.kt index e2a89e6..70b0b66 100644 --- a/app/src/main/java/ru/fincode/tsudesk/presentation/navigation/AppNavHost.kt +++ b/app/src/main/java/ru/fincode/tsudesk/presentation/navigation/AppNavHost.kt @@ -1,19 +1,18 @@ package ru.fincode.tsudesk.presentation.navigation +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable -import androidx.navigation.compose.navigation -import ru.fincode.tsudesk.presentation.main.MainScaffold +import androidx.navigation.compose.rememberNavController import ru.fincode.tsudesk.core.navigation.AppRoute import ru.fincode.tsudesk.core.navigation.navigateRoute +import ru.fincode.tsudesk.presentation.main.MainScaffold import ru.fincode.tsudesk.feature.schedule.presentation.screen.ScheduleRoute - import ru.fincode.tsudesk.feature.splash.presentation.screen.SplashRoute - @Composable fun AppNavHost( navController: NavHostController, @@ -33,51 +32,50 @@ fun AppNavHost( ) } - navigation(startDestination = AppRoute.Schedule) { + composable { + val tabsNavController = rememberNavController() - composable { - MainScaffold(navController) { innerModifier -> - ScheduleRoute( - modifier = innerModifier, -// onOpenDetails = { lessonId -> -// navController.navigateRoute(AppRoute.ScheduleDetails(lessonId)) -// } - ) - } + MainScaffold( + navController = tabsNavController + ) { innerModifier -> + MainTabsNavHost( + navController = tabsNavController, + modifier = innerModifier + ) } - - composable { - MainScaffold(navController) { innerModifier: Modifier -> -// NewsScreen( -// modifier = innerModifier, -// onOpenDetails = { id -> -// navController.navigateRoute(AppRoute.NewsDetails(id)) -// } -// ) - } - } - - composable { - MainScaffold(navController) { innerModifier: Modifier -> -// ProgressScreen(modifier = innerModifier) - } - } - - composable { - MainScaffold(navController) { innerModifier -> - // SettingsRoute(modifier = innerModifier) - } - } -// -// composable { entry -> -// val args = entry.route() -// ScheduleDetailsScreen(lessonId = args.lessonId) -// } -// -// composable { entry -> -// val args = entry.route() -// NewsDetailsScreen(id = args.id) -// } } } +} + +@Composable +private fun MainTabsNavHost( + navController: NavHostController, + modifier: Modifier = Modifier, +) { + NavHost( + navController = navController, + startDestination = AppRoute.Schedule, + modifier = modifier + ) { + composable { + ScheduleRoute(modifier = Modifier.fillMaxSize()) + } + + composable { + NewsRoute(modifier = Modifier.fillMaxSize()) + } + + composable { + // ProgressRoute(modifier = Modifier) + } + + composable { + // SettingsRoute(modifier = Modifier) + } + } +} + +@Composable +fun NewsRoute(modifier: Modifier) { + TODO("Not yet implemented") } \ No newline at end of file diff --git a/core/database/impl/src/main/java/ru/fincode/core/database/impl/AppDatabase.kt b/core/database/impl/src/main/java/ru/fincode/core/database/impl/AppDatabase.kt index b2eb0ea..b5368c9 100644 --- a/core/database/impl/src/main/java/ru/fincode/core/database/impl/AppDatabase.kt +++ b/core/database/impl/src/main/java/ru/fincode/core/database/impl/AppDatabase.kt @@ -13,7 +13,6 @@ import ru.fincode.tsudesk.core.database.api.schedule.ScheduleDao LessonCacheEntity::class ], version = 2, - exportSchema = true ) @TypeConverters(StringListConverter::class) abstract class AppDatabase : RoomDatabase() { diff --git a/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/navigation/ScheduleGraph.kt b/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/navigation/ScheduleGraph.kt index 1f70f05..0843325 100644 --- a/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/navigation/ScheduleGraph.kt +++ b/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/navigation/ScheduleGraph.kt @@ -1,18 +1,25 @@ package ru.fincode.tsudesk.feature.schedule.presentation.navigation +import androidx.compose.ui.Modifier import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import ru.fincode.tsudesk.core.navigation.AppRoute import ru.fincode.tsudesk.feature.schedule.presentation.screen.ScheduleRoute fun NavGraphBuilder.scheduleGraph( + modifier: Modifier = Modifier, + // на будущее: + // onOpenDetails: (lessonId: Long) -> Unit, ) { composable { - ScheduleRoute() + ScheduleRoute( + modifier = modifier, + // onOpenDetails = onOpenDetails + ) } - // composable { backStackEntry -> - // val args = backStackEntry.toRoute() + // composable { entry -> + // val args = entry.toRoute() // ScheduleDetailsRoute(lessonId = args.lessonId) // } -} +} \ No newline at end of file diff --git a/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/ScheduleAction.kt b/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/screen/ScheduleAction.kt similarity index 85% rename from feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/ScheduleAction.kt rename to feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/screen/ScheduleAction.kt index 82211e0..f25e89c 100644 --- a/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/ScheduleAction.kt +++ b/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/screen/ScheduleAction.kt @@ -1,4 +1,4 @@ -package ru.fincode.tsudesk.feature.schedule.presentation +package ru.fincode.tsudesk.feature.schedule.presentation.screen sealed interface ScheduleAction { diff --git a/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/screen/ScheduleContract.kt b/feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/screen/ScheduleUiContract.kt similarity index 100% rename from feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/screen/ScheduleContract.kt rename to feature/schedule/src/main/java/ru/fincode/tsudesk/feature/schedule/presentation/screen/ScheduleUiContract.kt