48 lines
1.6 KiB
Kotlin
48 lines
1.6 KiB
Kotlin
package com.taskttl.data.di
|
|
|
|
import com.taskttl.data.repository.OnboardingRepository
|
|
import com.taskttl.data.repository.SettingsRepository
|
|
import com.taskttl.data.repository.impl.OnboardingRepositoryImpl
|
|
import com.taskttl.data.repository.impl.SettingsRepositoryImpl
|
|
import com.taskttl.data.viewmodel.CategoryViewModel
|
|
import com.taskttl.data.viewmodel.CountdownViewModel
|
|
import com.taskttl.data.viewmodel.FeedbackViewModel
|
|
import com.taskttl.data.viewmodel.OnboardingViewModel
|
|
import com.taskttl.data.viewmodel.SplashViewModel
|
|
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)
|
|
viewModelOf(::FeedbackViewModel)
|
|
} |