BottomBarNavGraph.kt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package com.vpn.fastestvpnservice.navigation
  2. import androidx.activity.ComponentActivity
  3. import androidx.compose.animation.AnimatedContentTransitionScope
  4. import androidx.compose.animation.EnterTransition
  5. import androidx.compose.animation.ExitTransition
  6. import androidx.compose.animation.core.tween
  7. import androidx.compose.animation.fadeIn
  8. import androidx.compose.animation.fadeOut
  9. import androidx.compose.material.Surface
  10. import androidx.compose.runtime.Composable
  11. import androidx.navigation.NavBackStackEntry
  12. import androidx.navigation.NavHostController
  13. import androidx.navigation.compose.NavHost
  14. import androidx.navigation.compose.composable
  15. import com.vpn.fastestvpnservice.fragments.BlankFragment
  16. import com.vpn.fastestvpnservice.screens.Login
  17. import com.vpn.fastestvpnservice.screens.ServerList
  18. import com.vpn.fastestvpnservice.screens.accountScreensAll.ChangePassword
  19. import com.vpn.fastestvpnservice.screens.accountScreensAll.FavoriteServers
  20. import com.vpn.fastestvpnservice.screens.accountScreensAll.SubscriptionScreen
  21. import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.Account
  22. import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.Help
  23. import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.Home
  24. import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.Settings
  25. import com.vpn.fastestvpnservice.screens.helpScreensAll.About
  26. import com.vpn.fastestvpnservice.screens.helpScreensAll.CustomerSupport
  27. import com.vpn.fastestvpnservice.screens.helpScreensAll.FAQ
  28. import com.vpn.fastestvpnservice.screens.helpScreensAll.PrivacyPolicy
  29. import com.vpn.fastestvpnservice.screens.helpScreensAll.TermsAndConditions
  30. import com.vpn.fastestvpnservice.screens.settingsScreenAll.Notifications
  31. import com.vpn.fastestvpnservice.screens.settingsScreenAll.SplitTunneling
  32. import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
  33. import com.vpn.fastestvpnservice.sealedClass.Screen
  34. @Composable
  35. fun BottomBarNavGraph(navHostController: NavHostController,
  36. settingsNavHostController: NavHostController,
  37. activity: ComponentActivity
  38. ) {
  39. val noEnterTransition : AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition = {
  40. fadeIn(
  41. animationSpec = tween(durationMillis = 0),
  42. initialAlpha = 1f
  43. )
  44. }
  45. val noExitTransition : AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition = {
  46. fadeOut(
  47. animationSpec = tween(durationMillis = 0),
  48. targetAlpha = 1f
  49. )
  50. }
  51. NavHost(
  52. navController = navHostController,
  53. startDestination = BottomBarScreen.Home.route,
  54. enterTransition = noEnterTransition,
  55. exitTransition = noExitTransition
  56. ) {
  57. composable(route = BottomBarScreen.Home.route) {
  58. Home(navHostController = navHostController, activity, settingsNavHostController)
  59. }
  60. composable(route = BottomBarScreen.Settings.route) {
  61. Settings(navHostController = navHostController)
  62. }
  63. composable(route = BottomBarScreen.Help.route) { entry ->
  64. Help(navHostController = navHostController)
  65. }
  66. composable(route = BottomBarScreen.Account.route) {
  67. Account(navHostController = navHostController,
  68. settingsNavHostController = settingsNavHostController)
  69. }
  70. composable(route = Screen.FAQ.route) {
  71. FAQ(navHostController = navHostController)
  72. }
  73. composable(route = Screen.PrivacyPolicy.route) {
  74. PrivacyPolicy(navHostController = navHostController)
  75. }
  76. composable(route = Screen.TermsAndConditions.route) {
  77. TermsAndConditions(navHostController = navHostController, false)
  78. }
  79. composable(route = Screen.About.route) {
  80. About(navHostController = navHostController)
  81. }
  82. composable(route = Screen.ChangePassword.route) {
  83. ChangePassword(navHostController = navHostController)
  84. }
  85. composable(route = Screen.ServerList.route) {
  86. ServerList(navHostController = navHostController, false)
  87. }
  88. composable(route = Screen.Notifications.route) {
  89. Notifications(navHostController = navHostController)
  90. }
  91. composable(route = Screen.SplitTunneling.route) {
  92. SplitTunneling(navHostController = navHostController)
  93. }
  94. composable(route = Screen.FavoriteServers.route) {
  95. FavoriteServers(navHostController = navHostController)
  96. }
  97. composable(route = Screen.Subscription.route) {
  98. // SubscriptionScreenFragment(navHostController = navHostController)
  99. SubscriptionScreen(navHostController, activity)
  100. }
  101. composable(route = Screen.CustomerSupport.route) {
  102. CustomerSupport(navHostController = navHostController)
  103. }
  104. /* Again declare for login because of different -> navHostController */
  105. // composable(route = Screen.Login.route) {
  106. // Login(navHostController = navHostController)
  107. // }
  108. }
  109. }