MainActivity.kt (2405B) - raw
1 package me.rhunk.snapenhance.ui.manager 2 3 import android.content.Intent 4 import android.os.Bundle 5 import androidx.activity.ComponentActivity 6 import androidx.activity.compose.setContent 7 import androidx.compose.material3.MaterialTheme 8 import androidx.compose.material3.Scaffold 9 import androidx.compose.runtime.remember 10 import androidx.navigation.NavGraph.Companion.findStartDestination 11 import androidx.navigation.NavHostController 12 import androidx.navigation.compose.rememberNavController 13 import me.rhunk.snapenhance.RemoteSideContext 14 import me.rhunk.snapenhance.SharedContextHolder 15 import me.rhunk.snapenhance.common.ui.AppMaterialTheme 16 17 class MainActivity : ComponentActivity() { 18 private lateinit var navController: NavHostController 19 private lateinit var managerContext: RemoteSideContext 20 21 override fun onNewIntent(intent: Intent) { 22 super.onNewIntent(intent) 23 if (::navController.isInitialized.not()) return 24 intent.getStringExtra("route")?.let { route -> 25 navController.popBackStack() 26 navController.navigate(route) { 27 popUpTo(navController.graph.findStartDestination().id){ 28 inclusive = true 29 } 30 } 31 } 32 } 33 34 override fun onCreate(savedInstanceState: Bundle?) { 35 super.onCreate(savedInstanceState) 36 37 managerContext = SharedContextHolder.remote(this).apply { 38 activity = this@MainActivity 39 checkForRequirements() 40 } 41 42 val routes = Routes(managerContext) 43 routes.getRoutes().forEach { it.init() } 44 45 setContent { 46 navController = rememberNavController() 47 val navigation = remember { 48 Navigation(managerContext, navController, routes.also { 49 it.navController = navController 50 }) 51 } 52 val startDestination = remember { intent.getStringExtra("route") ?: routes.home.routeInfo.id } 53 54 AppMaterialTheme { 55 Scaffold( 56 containerColor = MaterialTheme.colorScheme.background, 57 topBar = { navigation.TopBar() }, 58 bottomBar = { navigation.BottomBar() }, 59 floatingActionButton = { navigation.FloatingActionButton() } 60 ) { innerPadding -> navigation.Content(innerPadding, startDestination) } 61 } 62 } 63 } 64 }