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