Files
TaskTTL/composeApp/src/commonMain/kotlin/com/taskttl/data/di/KoinModels.kt
2025-10-12 22:08:39 +08:00

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)
}