Coverage Summary for Class: ViewModelModule (com.vsevolodganin.clicktrack.di.module)
Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
ViewModelModule |
0%
(0/11)
|
|
0%
(0/14)
|
0%
(0/50)
|
ViewModelModule$DefaultImpls |
0%
(0/10)
|
|
0%
(0/10)
|
0%
(0/31)
|
Total |
0%
(0/21)
|
|
0%
(0/24)
|
0%
(0/81)
|
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.RootViewModel
import com.vsevolodganin.clicktrack.RootViewModelImpl
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 kotlinx.serialization.serializer
import me.tatarka.inject.annotations.Provides
interface ViewModelModule {
@Provides
@MainControllerScope
fun provideRootViewModel(rootViewModelImpl: RootViewModelImpl): RootViewModel = rootViewModelImpl
@Provides
@MainControllerScope
fun provideDrawerNavigationImpl(): DrawerNavigationImpl = DrawerNavigationImpl()
@Provides
@MainControllerScope
fun provideLifecycleOwner(componentContext: ComponentContext): LifecycleOwner = componentContext
@Provides
@MainControllerScope
fun provideStateKeeperOwner(componentContext: ComponentContext): StateKeeperOwner = componentContext
@Provides
@MainControllerScope
fun provideInstanceKeeperOwner(componentContext: ComponentContext): InstanceKeeperOwner = componentContext
@Provides
@MainControllerScope
fun provideScreenStackNavigation(): ScreenStackNavigation = StackNavigation()
@Provides
@MainControllerScope
fun provideDrawerNavigation(drawerNavigationImpl: DrawerNavigationImpl): DrawerNavigation = drawerNavigationImpl
@Provides
@MainControllerScope
fun provideDrawerNavigationSource(drawerNavigationImpl: DrawerNavigationImpl): DrawerNavigationSource = drawerNavigationImpl
@Provides
@MainControllerScope
fun provideScreenStackState(
componentContext: ComponentContext,
stackNavigation: ScreenStackNavigation,
screenViewModelFactory: ScreenViewModelFactory,
): ScreenStackState = componentContext.childStack(
source = stackNavigation,
initialStack = { listOf(ScreenConfiguration.ClickTrackList) },
childFactory = screenViewModelFactory::create,
serializer = serializer(),
)
@Provides
@MainControllerScope
fun provideDrawerViewModel(
componentContext: ComponentContext,
drawerViewModelFactory: (ComponentContext) -> DrawerViewModelImpl,
): DrawerViewModel = drawerViewModelFactory.invoke(componentContext.childContext("Drawer"))
}