Coverage Summary for Class: ViewModelModule (com.vsevolodganin.clicktrack.di.module)

Class Method, % Branch, % Line, % Instruction, %
ViewModelModule$BindsMirror 0% (0/1) 0% (0/1) 0% (0/2)
ViewModelModule$Companion 0% (0/5) 0% (0/8) 0% (0/39)
ViewModelModule$Companion$ProvideDrawerNavigationImplMetroFactory 0% (0/1) 0% (0/1) 0% (0/8)
ViewModelModule$Companion$ProvideDrawerViewModelMetroFactory 0% (0/1) 0% (0/1) 0% (0/18)
ViewModelModule$Companion$ProvideDrawerViewModelMetroFactory$Companion 0% (0/1) 0% (0/1) 0% (0/13)
ViewModelModule$Companion$ProvideScreenStackNavigationMetroFactory 0% (0/1) 0% (0/1) 0% (0/8)
ViewModelModule$Companion$ProvideScreenStackStateMetroFactory 0% (0/1) 0% (0/1) 0% (0/25)
ViewModelModule$Companion$ProvideScreenStackStateMetroFactory$Companion 0% (0/1) 0% (0/1) 0% (0/15)
Total 0% (0/12) 0% (0/15) 0% (0/128)


 package com.vsevolodganin.clicktrack.di.module
 
 import com.arkivanov.decompose.ComponentContext
 import com.arkivanov.decompose.childContext
 import com.arkivanov.decompose.router.stack.StackNavigation
 import com.arkivanov.decompose.router.stack.childStack
 import com.arkivanov.essenty.instancekeeper.InstanceKeeperOwner
 import com.arkivanov.essenty.lifecycle.LifecycleOwner
 import com.arkivanov.essenty.statekeeper.StateKeeperOwner
 import com.vsevolodganin.clicktrack.ScreenConfiguration
 import com.vsevolodganin.clicktrack.ScreenStackNavigation
 import com.vsevolodganin.clicktrack.ScreenStackState
 import com.vsevolodganin.clicktrack.ScreenViewModelFactory
 import com.vsevolodganin.clicktrack.di.component.MainControllerScope
 import com.vsevolodganin.clicktrack.drawer.DrawerNavigation
 import com.vsevolodganin.clicktrack.drawer.DrawerNavigationImpl
 import com.vsevolodganin.clicktrack.drawer.DrawerNavigationSource
 import com.vsevolodganin.clicktrack.drawer.DrawerViewModel
 import com.vsevolodganin.clicktrack.drawer.DrawerViewModelImpl
 import dev.zacsweers.metro.BindingContainer
 import dev.zacsweers.metro.Binds
 import dev.zacsweers.metro.ContributesTo
 import dev.zacsweers.metro.Provides
 import dev.zacsweers.metro.SingleIn
 import kotlinx.serialization.serializer
 
 @ContributesTo(MainControllerScope::class)
 @BindingContainer
 interface ViewModelModule {
 
     @Binds
     fun provideLifecycleOwner(componentContext: ComponentContext): LifecycleOwner
 
     @Binds
     fun provideStateKeeperOwner(componentContext: ComponentContext): StateKeeperOwner
 
     @Binds
     fun provideInstanceKeeperOwner(componentContext: ComponentContext): InstanceKeeperOwner
 
     @Binds
     fun provideDrawerNavigation(drawerNavigationImpl: DrawerNavigationImpl): DrawerNavigation
 
     @Binds
     fun provideDrawerNavigationSource(drawerNavigationImpl: DrawerNavigationImpl): DrawerNavigationSource
 
     companion object {
         @Provides
         @SingleIn(MainControllerScope::class)
         fun provideDrawerNavigationImpl(): DrawerNavigationImpl = DrawerNavigationImpl()
 
         @Provides
         @SingleIn(MainControllerScope::class)
         fun provideScreenStackNavigation(): ScreenStackNavigation = StackNavigation()
 
         @Provides
         @SingleIn(MainControllerScope::class)
         fun provideScreenStackState(
             componentContext: ComponentContext,
             stackNavigation: ScreenStackNavigation,
             screenViewModelFactory: ScreenViewModelFactory,
         ): ScreenStackState = componentContext.childStack(
             source = stackNavigation,
             initialStack = { listOf(ScreenConfiguration.ClickTrackList) },
             childFactory = screenViewModelFactory::create,
             serializer = serializer(),
         )
 
         @Provides
         @SingleIn(MainControllerScope::class)
         fun provideDrawerViewModel(
             componentContext: ComponentContext,
             drawerViewModelFactory: DrawerViewModelImpl.Factory,
         ): DrawerViewModel = drawerViewModelFactory.create(componentContext.childContext("Drawer"))
     }
 }