46 lines
1.5 KiB
Kotlin
46 lines
1.5 KiB
Kotlin
|
package com.taskttl.data.di
|
||
|
|
||
|
import com.taskttl.data.repository.impl.OnboardingRepositoryImpl
|
||
|
import com.taskttl.data.repository.SettingsRepository
|
||
|
import com.taskttl.data.repository.impl.SettingsRepositoryImpl
|
||
|
import com.taskttl.data.repository.OnboardingRepository
|
||
|
import com.taskttl.data.viewmodel.OnboardingViewModel
|
||
|
import com.taskttl.data.viewmodel.SplashViewModel
|
||
|
import com.taskttl.data.viewmodel.CategoryViewModel
|
||
|
import com.taskttl.data.viewmodel.CountdownViewModel
|
||
|
import com.taskttl.data.viewmodel.TaskViewModel
|
||
|
import org.koin.core.KoinApplication
|
||
|
import org.koin.core.context.startKoin
|
||
|
import org.koin.core.module.Module
|
||
|
import org.koin.core.module.dsl.singleOf
|
||
|
import org.koin.core.module.dsl.viewModelOf
|
||
|
import org.koin.dsl.bind
|
||
|
import org.koin.dsl.module
|
||
|
|
||
|
expect fun platformModule(): Module
|
||
|
|
||
|
/**
|
||
|
* 初始化Koin
|
||
|
* @param [config] 配置
|
||
|
*/
|
||
|
fun initKoin(config: (KoinApplication.() -> Unit)? = null) {
|
||
|
startKoin {
|
||
|
config?.invoke(this)
|
||
|
modules(repositoryModule, viewModelModule, platformModule(), dataModule)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** 存储库模块 */
|
||
|
val repositoryModule = module {
|
||
|
singleOf(::OnboardingRepositoryImpl).bind(OnboardingRepository::class)
|
||
|
singleOf(::SettingsRepositoryImpl).bind(SettingsRepository::class)
|
||
|
}
|
||
|
|
||
|
/** 视图模型模块 */
|
||
|
val viewModelModule = module {
|
||
|
viewModelOf(::SplashViewModel)
|
||
|
viewModelOf(::OnboardingViewModel)
|
||
|
viewModelOf(::TaskViewModel)
|
||
|
viewModelOf(::CategoryViewModel)
|
||
|
viewModelOf(::CountdownViewModel)
|
||
|
}
|