Coverage Summary for Class: SalesNavigationKt (com.imecatro.demosales.navigation.sales)

Class Method, % Branch, % Line, % Instruction, %
SalesNavigationKt 0% (0/1) 0% (0/1) 0% (0/10)
SalesNavigationKt$salesFeature$1 0% (0/1) 0% (0/5) 0% (0/60)
SalesNavigationKt$salesFeature$1$1 0% (0/1) 0% (0/4) 0% (0/88)
SalesNavigationKt$salesFeature$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/14)
SalesNavigationKt$salesFeature$1$1$2$1 0% (0/1) 0% (0/1) 0% (0/12)
SalesNavigationKt$salesFeature$1$1$2$1$1 0% (0/1) 0% (0/1) 0% (0/9)
SalesNavigationKt$salesFeature$1$1$2$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$1$3$1 0% (0/1) 0% (0/1) 0% (0/13)
SalesNavigationKt$salesFeature$1$1$3$1$1 0% (0/1) 0% (0/1) 0% (0/9)
SalesNavigationKt$salesFeature$1$1$3$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$2 0% (0/1) 0% (0/5) 0% (0/100)
SalesNavigationKt$salesFeature$1$2$1$1 0% (0/1) 0% (0/2) 0% (0/1) 0% (0/10)
SalesNavigationKt$salesFeature$1$2$2$1 0% (0/1) 0% (0/1) 0% (0/6)
SalesNavigationKt$salesFeature$1$2$2$1$1 0% (0/1) 0% (0/1) 0% (0/5)
SalesNavigationKt$salesFeature$1$2$2$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$2$3$1 0% (0/1) 0% (0/1) 0% (0/12)
SalesNavigationKt$salesFeature$1$3 0% (0/1) 0% (0/4) 0% (0/69)
SalesNavigationKt$salesFeature$1$3$1$1 0% (0/1) 0% (0/1) 0% (0/4)
SalesNavigationKt$salesFeature$1$3$2$1 0% (0/1) 0% (0/1) 0% (0/9)
SalesNavigationKt$salesFeature$1$3$2$1$1 0% (0/1) 0% (0/1) 0% (0/5)
SalesNavigationKt$salesFeature$1$3$2$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$4 0% (0/1) 0% (0/4) 0% (0/89)
SalesNavigationKt$salesFeature$1$4$1$1 0% (0/1) 0% (0/2) 0% (0/5) 0% (0/50)
SalesNavigationKt$salesFeature$1$4$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/10)
SalesNavigationKt$salesFeature$1$4$1$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$4$1$1$2$1 0% (0/1) 0% (0/1) 0% (0/5)
SalesNavigationKt$salesFeature$1$4$1$1$2$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$4$viewModel$1$1 0% (0/1) 0% (0/1) 0% (0/5)
SalesNavigationKt$salesFeature$1$5 0% (0/1) 0% (0/8) 0% (0/152)
SalesNavigationKt$salesFeature$1$5$1$1 0% (0/1) 0% (0/1) 0% (0/13)
SalesNavigationKt$salesFeature$1$5$1$1$1 0% (0/1) 0% (0/1) 0% (0/10)
SalesNavigationKt$salesFeature$1$5$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$5$2$1 0% (0/1) 0% (0/1) 0% (0/14)
SalesNavigationKt$salesFeature$1$5$2$1$1 0% (0/1) 0% (0/1) 0% (0/10)
SalesNavigationKt$salesFeature$1$5$2$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$5$3$1 0% (0/1) 0% (0/1) 0% (0/6)
SalesNavigationKt$salesFeature$1$5$3$1$1 0% (0/1) 0% (0/1) 0% (0/5)
SalesNavigationKt$salesFeature$1$5$3$1$1$1 0% (0/1) 0% (0/1) 0% (0/3)
SalesNavigationKt$salesFeature$1$5$viewModel$1$1 0% (0/1) 0% (0/1) 0% (0/5)
Total 0% (0/39) 0% (0/4) 0% (0/67) 0% (0/836)


 package com.imecatro.demosales.navigation.sales
 
 import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
 import androidx.navigation.NavGraphBuilder
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.composable
 import androidx.navigation.compose.navigation
 import androidx.navigation.toRoute
 import com.imecatro.demosales.ui.sales.add.screens.CheckoutTicketComposableImpl
 import com.imecatro.demosales.ui.sales.add.screens.CreateTicketComposableStateImpl
 import com.imecatro.demosales.ui.sales.add.screens.ResumeTicketScreenImpl
 import com.imecatro.demosales.ui.sales.add.viewmodel.AddSaleViewModel
 import com.imecatro.demosales.ui.sales.add.viewmodel.CheckoutViewModel
 import com.imecatro.demosales.ui.sales.details.viewmodel.TicketDetailsViewModel
 import com.imecatro.demosales.ui.sales.details.views.TicketDetailsComposableImpl
 
 /**
  * Defines the navigation graph for the Sales feature.
  *
  * This includes routes for listing sales, adding a new sale, checking out, and viewing details.
  *
  * @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.salesFeature(navController: NavHostController) {
     navigation<T>(startDestination = SalesDestinations.List) {
         composable<SalesDestinations.List> {
 
             ListAndDetailsSalesPane(
                 onAddSale = { navController.navigate(SalesDestinations.Add()) },
                 onEditSale = { id ->
                     navController.navigate(SalesDestinations.Checkout(id)) {
                         popUpTo(SalesDestinations.Details(id)) { inclusive = true }
                     }
                 },
                 onDuplicateSale = { id ->
                     navController.navigate(SalesDestinations.Add(id)) {
                         popUpTo(SalesDestinations.Details(id)) { inclusive = true }
                     }
                 }
             )
         }
         composable<SalesDestinations.Add> { backStackEntry ->
             val id = backStackEntry.toRoute<SalesDestinations.Add>().id
 
             CreateTicketComposableStateImpl(
                 addSaleViewModel = hiltViewModel(creationCallback = { f: AddSaleViewModel.Factory -> f.create(id ?: 0L) }),
                 onBackToList = {
                     navController.navigate(SalesDestinations.List) {
                         popUpTo(SalesDestinations.List) { inclusive = true }
                     }
                 },
                 onNavigateToCheckout = { id ->
                     navController.navigate(SalesDestinations.Checkout(id))
                 })
         }
 
         composable<SalesDestinations.Checkout> { backStackEntry ->
 
             val id = backStackEntry.toRoute<SalesDestinations.Checkout>().id
 
             CheckoutTicketComposableImpl(
                 checkoutViewModel = hiltViewModel(creationCallback = { f: CheckoutViewModel.Factory -> f.create(id) })
             ) { ticket ->
                 navController.navigate(SalesDestinations.SuccessDetails(ticket)) {
                     popUpTo(SalesDestinations.List) { inclusive = false }
                 }
             }
         }
         composable<SalesDestinations.SuccessDetails> { backStackEntry ->
             val navArgs = backStackEntry.toRoute<SalesDestinations.Details>()
 
             val viewModel: TicketDetailsViewModel =
                 hiltViewModel(creationCallback = { f: TicketDetailsViewModel.Factory -> f.create(navArgs.id) })
 
             ResumeTicketScreenImpl(ticketDetailsVM = viewModel, saleId = navArgs.id) {
                 it?.let {
                     navController.navigate(SalesDestinations.Add()) {
                         popUpTo(SalesDestinations.Details(navArgs.id)) { inclusive = true }
                     }
                 } ?: run {
                     navController.navigate(SalesDestinations.List) {
                         popUpTo(SalesDestinations.List) { inclusive = true }
                     }
                 }
             }
 
         }
         composable<SalesDestinations.Details> { backStackEntry ->
             val navArgs = backStackEntry.toRoute<SalesDestinations.Details>()
 
             val viewModel: TicketDetailsViewModel =
                 hiltViewModel(creationCallback = { f: TicketDetailsViewModel.Factory -> f.create(navArgs.id) })
 
             TicketDetailsComposableImpl(
                 ticketDetailsVM = viewModel, saleId = navArgs.id,
                 onEditTicket = {
                     navController.navigate(SalesDestinations.Checkout(it)) {
                         popUpTo(SalesDestinations.Details(navArgs.id)) { inclusive = true }
                     }
                 },
                 onDuplicateTicket = {
                     navController.navigate(SalesDestinations.Add(it)) {
                         popUpTo(SalesDestinations.Details(navArgs.id)) { inclusive = true }
                     }
                 },
                 onBackToList = {
                     navController.navigate(SalesDestinations.List) {
                         popUpTo(SalesDestinations.List) { inclusive = true }
                     }
                 }
             )
         }
     }
 }