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 }
}
}
)
}
}
}