Coverage Summary for Class: ProductsNavigationKt (com.imecatro.demosales.navigation.products)

Class Method, % Branch, % Line, % Instruction, %
ProductsNavigationKt 0% (0/1) 0% (0/1) 0% (0/10)
ProductsNavigationKt$productsNavigation$1 0% (0/1) 0% (0/7) 0% (0/80)
ProductsNavigationKt$productsNavigation$1$1 0% (0/1) 0% (0/3) 0% (0/88)
ProductsNavigationKt$productsNavigation$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/9)
ProductsNavigationKt$productsNavigation$1$1$2$1 0% (0/1) 0% (0/1) 0% (0/13)
ProductsNavigationKt$productsNavigation$1$1$3$1 0% (0/1) 0% (0/1) 0% (0/12)
ProductsNavigationKt$productsNavigation$1$3 0% (0/1) 0% (0/2) 0% (0/75)
ProductsNavigationKt$productsNavigation$1$3$1$1 0% (0/1) 0% (0/1) 0% (0/9)
ProductsNavigationKt$productsNavigation$1$3$2$1 0% (0/1) 0% (0/2) 0% (0/5) 0% (0/48)
ProductsNavigationKt$productsNavigation$1$3$2$1$1$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$4 0% (0/1) 0% (0/4) 0% (0/75)
ProductsNavigationKt$productsNavigation$1$4$1$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$4$1$1$1 0% (0/1) 0% (0/1) 0% (0/5)
ProductsNavigationKt$productsNavigation$1$4$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
ProductsNavigationKt$productsNavigation$1$4$viewModel$1$1 0% (0/1) 0% (0/1) 0% (0/5)
ProductsNavigationKt$productsNavigation$1$5 0% (0/1) 0% (0/2) 0% (0/9) 0% (0/153)
ProductsNavigationKt$productsNavigation$1$5$1$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$5$1$1$1 0% (0/1) 0% (0/1) 0% (0/5)
ProductsNavigationKt$productsNavigation$1$5$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
ProductsNavigationKt$productsNavigation$1$5$2$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$5$2$1$1 0% (0/1) 0% (0/1) 0% (0/5)
ProductsNavigationKt$productsNavigation$1$5$2$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
ProductsNavigationKt$productsNavigation$1$5$3$1 0% (0/1) 0% (0/1) 0% (0/14)
ProductsNavigationKt$productsNavigation$1$5$viewModel$1$1 0% (0/1) 0% (0/2) 0% (0/5)
ProductsNavigationKt$productsNavigation$1$6 0% (0/1) 0% (0/2) 0% (0/67)
ProductsNavigationKt$productsNavigation$1$6$1$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$6$1$1$1 0% (0/1) 0% (0/1) 0% (0/5)
ProductsNavigationKt$productsNavigation$1$6$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
ProductsNavigationKt$productsNavigation$1$6$2$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$6$2$1$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$7 0% (0/1) 0% (0/8) 0% (0/142)
ProductsNavigationKt$productsNavigation$1$7$1$1 0% (0/1) 0% (0/4) 0% (0/17)
ProductsNavigationKt$productsNavigation$1$7$1$1$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$7$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
ProductsNavigationKt$productsNavigation$1$7$2$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$7$2$1$1 0% (0/1) 0% (0/1) 0% (0/5)
ProductsNavigationKt$productsNavigation$1$7$2$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
ProductsNavigationKt$productsNavigation$1$7$3$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$7$3$1$1 0% (0/1) 0% (0/1) 0% (0/6)
ProductsNavigationKt$productsNavigation$1$7$viewModel$1$1 0% (0/1) 0% (0/2) 0% (0/5)
Total 0% (0/40) 0% (0/4) 0% (0/77) 0% (0/936)


 package com.imecatro.demosales.navigation.products
 
 import androidx.hilt.navigation.compose.hiltViewModel
 import androidx.navigation.NavGraphBuilder
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.composable
 import androidx.navigation.navigation
 import androidx.navigation.toRoute
 import com.imecatro.products.ui.add.views.AddProductComposableStateImpl
 import com.imecatro.products.ui.catalog.CatalogViewModel
 import com.imecatro.products.ui.catalog.screens.CatalogPreview
 import com.imecatro.products.ui.categories.screens.CategoriesScreenImpl
 import com.imecatro.products.ui.details.viewmodels.ProductsDetailsViewModel
 import com.imecatro.products.ui.details.views.DetailsComposableStateImpl
 import com.imecatro.products.ui.list.views.ListOfProductsStateImpl
 import com.imecatro.products.ui.update.viewmodel.UpdateProductViewModel
 import com.imecatro.products.ui.update.views.UpdateProductComposableStateImpl
 import kotlinx.coroutines.launch
 
 private const val TAG = "ProductsNavigation"
 
 /**
  * Defines the navigation graph for the Products feature.
  *
  * This includes routes for listing products, adding/editing products, managing categories,
  * and creating catalogs.
  *
  * @param T The type of the root destination for this feature.
  * @param navController The [NavHostController] used for navigation between screens.
  */
 inline fun <reified T : Any> NavGraphBuilder.productsNavigation(navController: NavHostController) {
     navigation<T>(startDestination = ProductsDestinations.ListAndDetails) {
         composable<ProductsDestinations.ListAndDetails> {
 
             ListAndDetailsPane(onAddProduct = {
                 navController.navigate(ProductsDestinations.Add)
             }, onCreateCatalog = { ids ->
                 navController.navigate(ProductsDestinations.CatalogMaker(ids))
             },
                 onEditProduct = { id ->
                     navController.navigate(ProductsDestinations.Edit(id))
                 })
         }
         composable<ProductsDestinations.Categories> {
             CategoriesScreenImpl(hiltViewModel())
         }
         composable<ProductsDestinations.List> {
             ListOfProductsStateImpl(productsViewModel = hiltViewModel(), onCategoriesNav = {
                 navController.navigate(ProductsDestinations.Categories)
             }) {
                 it?.let {
                     navController.navigate(ProductsDestinations.Details(it)) {
                         popUpTo(ProductsDestinations.List)
                     }
                 } ?: run {
                     navController.navigate(ProductsDestinations.Add)
                 }
             }
         }
         composable<ProductsDestinations.CatalogMaker> { backStackEntry ->
             val navArgs = backStackEntry.toRoute<ProductsDestinations.CatalogMaker>()
 
             val viewModel: CatalogViewModel =
                 hiltViewModel(creationCallback = { f: CatalogViewModel.Factory -> f.create(navArgs.ids) })
 
             CatalogPreview(catalogViewModel = viewModel, onBack = {
                 navController.navigate(ProductsDestinations.ListAndDetails) {
                     popUpTo(ProductsDestinations.ListAndDetails) { inclusive = true }
                 }
             })
         }
         composable<ProductsDestinations.Details> { backStackEntry ->
             val navArgs = backStackEntry.toRoute<ProductsDestinations.Details>()
 
             val viewModel: ProductsDetailsViewModel =
                 hiltViewModel(creationCallback = { factory: ProductsDetailsViewModel.Factory ->
                     factory.create(
                         navArgs.id
                     )
                 })
 
             DetailsComposableStateImpl(
                 viewModel,
                 pageSelected = if (navArgs.mode == ProductsDestinations.DetailsOf.Stock) 1 else 0,
                 onNavigateBack = {
                     navController.navigate(ProductsDestinations.ListAndDetails) {
                         popUpTo(ProductsDestinations.ListAndDetails) { inclusive = true }
                     }
                 },
                 onProductDeleted = {
                     navController.navigate(ProductsDestinations.ListAndDetails) {
                         popUpTo(ProductsDestinations.ListAndDetails) { inclusive = true }
                     }
                 }, onNavigateToEdit = {
                     navController.navigate(ProductsDestinations.Edit(navArgs.id))
                 })
 
         }
         composable<ProductsDestinations.Add> {
 
             AddProductComposableStateImpl(hiltViewModel(), onBackToList = {
                 navController.navigate(ProductsDestinations.ListAndDetails) {
                     popUpTo(ProductsDestinations.ListAndDetails) { inclusive = true }
                 }
             }) {
                 navController.navigate(ProductsDestinations.ListAndDetails) {
                     popUpTo(ProductsDestinations.ListAndDetails)
                 }
             }
         }
 
         composable<ProductsDestinations.Edit> { backStackEntry ->
             val navArgs = backStackEntry.toRoute<ProductsDestinations.Edit>()
 
             val viewModel: UpdateProductViewModel =
                 hiltViewModel(creationCallback = { factory: UpdateProductViewModel.Factory ->
                     factory.create(
                         navArgs.id
                     )
                 })
 
 
             UpdateProductComposableStateImpl(
                 updateProductViewModel = viewModel,
                 onEditStock = {
                     val destinationRoute = ProductsDestinations.Details(
                         navArgs.id,
                         ProductsDestinations.DetailsOf.Stock
                     )
                     navController.navigate(destinationRoute) {
                         popUpTo(destinationRoute) { inclusive = true }
                     }
                 },
                 onBackToList = {
                     navController.navigate(ProductsDestinations.ListAndDetails) {
                         popUpTo(ProductsDestinations.ListAndDetails) { inclusive = true }
                     }
                 }) {
                 navController.navigate(ProductsDestinations.ListAndDetails) {
                     popUpTo(ProductsDestinations.ListAndDetails)
                 }
             }
         }
     }
 
 }