diff --git a/app/src/main/java/com/homebox/lens/navigation/NavGraph.kt b/app/src/main/java/com/homebox/lens/navigation/NavGraph.kt index c683a59..33f18dd 100644 --- a/app/src/main/java/com/homebox/lens/navigation/NavGraph.kt +++ b/app/src/main/java/com/homebox/lens/navigation/NavGraph.kt @@ -90,7 +90,10 @@ fun NavGraph( ) } composable(Screen.LabelsList.route) { - LabelsListScreen(navController = navController) + LabelsListScreen( + currentRoute = currentRoute, + navigationActions = navigationActions + ) } composable(route = Screen.LocationsList.route) { LocationsListScreen( diff --git a/app/src/main/java/com/homebox/lens/navigation/NavigationActions.kt b/app/src/main/java/com/homebox/lens/navigation/NavigationActions.kt index 056d19a..ff0ee98 100644 --- a/app/src/main/java/com/homebox/lens/navigation/NavigationActions.kt +++ b/app/src/main/java/com/homebox/lens/navigation/NavigationActions.kt @@ -49,6 +49,13 @@ class NavigationActions(private val navController: NavHostController) { } // [END_ENTITY: Function('navigateToLabels')] + // [ENTITY: Function('navigateToLabelEdit')] + fun navigateToLabelEdit(labelId: String? = null) { + Timber.i("[INFO][ACTION][navigate_to_label_edit] Navigating to Label Edit with ID: %s", labelId) + navController.navigate(Screen.LabelEdit.createRoute(labelId)) + } + // [END_ENTITY: Function('navigateToLabelEdit')] + // [ENTITY: Function('navigateToSearch')] fun navigateToSearch() { Timber.i("[INFO][ACTION][navigate_to_search] Navigating to Search.") @@ -77,7 +84,7 @@ class NavigationActions(private val navController: NavHostController) { // [ENTITY: Function('navigateToCreateItem')] fun navigateToCreateItem() { Timber.i("[INFO][ACTION][navigate_to_create_item] Navigating to Create Item.") - navController.navigate(Screen.ItemEdit.createRoute("new")) + navController.navigate(Screen.ItemEdit.createRoute()) } // [END_ENTITY: Function('navigateToCreateItem')] diff --git a/app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt b/app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt index 9b679fc..32480f6 100644 --- a/app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt +++ b/app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt @@ -31,7 +31,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp -import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.hilt.navigation.compose.hiltViewModel import com.homebox.lens.R import com.homebox.lens.navigation.NavigationActions import com.homebox.lens.ui.common.MainScaffold @@ -56,7 +56,7 @@ fun ItemEditScreen( currentRoute: String?, navigationActions: NavigationActions, itemId: String?, - viewModel: ItemEditViewModel = viewModel(), + viewModel: ItemEditViewModel = hiltViewModel(), onSaveSuccess: () -> Unit ) { val uiState by viewModel.uiState.collectAsState() diff --git a/app/src/main/java/com/homebox/lens/ui/screen/labelslist/LabelsListScreen.kt b/app/src/main/java/com/homebox/lens/ui/screen/labelslist/LabelsListScreen.kt index ccbb5b0..544541e 100644 --- a/app/src/main/java/com/homebox/lens/ui/screen/labelslist/LabelsListScreen.kt +++ b/app/src/main/java/com/homebox/lens/ui/screen/labelslist/LabelsListScreen.kt @@ -40,10 +40,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import androidx.navigation.NavController import com.homebox.lens.R import com.homebox.lens.domain.model.Label +import com.homebox.lens.navigation.NavigationActions import com.homebox.lens.navigation.Screen +import com.homebox.lens.ui.common.MainScaffold import timber.log.Timber // [END_IMPORTS] @@ -55,49 +56,38 @@ import timber.log.Timber * @param navController Контроллер навигации для перемещения между экранами. * @param viewModel ViewModel, предоставляющая состояние UI для экрана меток. */ -@OptIn(ExperimentalMaterial3Api::class) @Composable fun LabelsListScreen( - navController: NavController, + currentRoute: String?, + navigationActions: NavigationActions, viewModel: LabelsListViewModel = hiltViewModel() ) { val uiState by viewModel.uiState.collectAsState() - Scaffold( - topBar = { - TopAppBar( - title = { Text(text = stringResource(id = R.string.screen_title_labels)) }, - navigationIcon = { - IconButton(onClick = { - Timber.i("[INFO][ACTION][navigate_up] Navigate up initiated.") - navController.navigateUp() - }) { - Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = stringResource(id = R.string.content_desc_navigate_back) - ) - } - } - ) - }, - floatingActionButton = { - FloatingActionButton(onClick = { - Timber.i("[INFO][ACTION][navigate_to_label_edit] FAB clicked: Navigate to create new label screen.") - navController.navigate(Screen.LabelEdit.createRoute()) - }) { - Icon( - imageVector = Icons.Default.Add, - contentDescription = stringResource(id = R.string.content_desc_create_label) - ) - } - } + MainScaffold( + topBarTitle = stringResource(id = R.string.screen_title_labels), + currentRoute = currentRoute, + navigationActions = navigationActions ) { paddingValues -> + Scaffold( + floatingActionButton = { + FloatingActionButton(onClick = { + Timber.i("[INFO][ACTION][navigate_to_label_edit] FAB clicked: Navigate to create new label screen.") + navigationActions.navigateToLabelEdit(null) + }) { + Icon( + imageVector = Icons.Default.Add, + contentDescription = stringResource(id = R.string.content_desc_create_label) + ) + } + } + ) { innerPaddingValues -> val currentState = uiState Box( modifier = Modifier .fillMaxSize() - .padding(paddingValues), + .padding(innerPaddingValues), // Use innerPaddingValues here contentAlignment = Alignment.Center ) { when (currentState) { @@ -115,7 +105,7 @@ fun LabelsListScreen( labels = currentState.labels, onLabelClick = { label -> Timber.i("[INFO][ACTION][navigate_to_label_edit] Label clicked: ${label.id}. Navigating to label edit screen.") - navController.navigate(Screen.LabelEdit.createRoute(label.id)) + navigationActions.navigateToLabelEdit(label.id) } ) } @@ -124,6 +114,7 @@ fun LabelsListScreen( } } } +} // [END_ENTITY: Function('LabelsListScreen')] // [ENTITY: Function('LabelsList')]