Coverage Summary for Class: NavigatorImpl (com.stslex93.notes.core.navigation.navigator)

Class Class, % Method, % Branch, % Line, % Instruction, %
NavigatorImpl 0% (0/1) 0% (0/5) 0% (0/12) 0% (0/14) 0% (0/71)


 package com.stslex93.notes.core.navigation.navigator
 
 import androidx.navigation.NavHostController
 import com.stslex.aproselection.core.core.Logger
 import com.stslex93.notes.core.navigation.model.NavigationScreen
 import com.stslex93.notes.core.ui.di.Navigator
 import com.stslex93.notes.core.ui.di.Screen
 import javax.inject.Inject
 
 class NavigatorImpl @Inject constructor(
     private val navController: NavHostController
 ) : Navigator {
 
     override fun invoke(screen: Screen) {
         when (screen) {
             is NavigationScreen.PopBackStack -> navController.popBackStack()
             is NavigationScreen -> navigateScreen(screen)
             else -> {
                 Logger.debug("unresolve navigation route", this::class.simpleName)
             }
         }
     }
 
     private fun navigateScreen(screen: NavigationScreen) {
         val currentRoute = navController.currentDestination?.route ?: return
         if (currentRoute == screen.screen.navigationRoute) return
 
         navController.navigate(screen.screenRoute) {
             if (screen.isSingleTop.not()) return@navigate
 
             popUpTo(currentRoute) {
                 inclusive = true
                 saveState = true
             }
             launchSingleTop = true
         }
     }
 }