package com.taskttl.data.viewmodel import androidx.lifecycle.viewModelScope import com.taskttl.core.viewmodel.BaseViewModel import com.taskttl.data.repository.CategoryRepository import com.taskttl.data.repository.OnboardingRepository import com.taskttl.data.state.OnboardingEffect import com.taskttl.data.state.OnboardingIntent import com.taskttl.data.state.OnboardingState import kotlinx.coroutines.launch /** * 入职视图模型 * @author admin * @date 2025/10/05 * @constructor 创建[OnboardingViewModel] * @param [onboardingRepository] 引导存储库 * @param [categoryRepository] 类别存储库 */ class OnboardingViewModel( private val onboardingRepository: OnboardingRepository, private val categoryRepository: CategoryRepository, ) : BaseViewModel(initialState = OnboardingState()) { override fun handleIntent(intent: OnboardingIntent) { when (intent) { is OnboardingIntent.NextPage -> nextPage() is OnboardingIntent.MarkOnboardingCompleted -> markOnboardingCompleted() } } /** * 下一页 */ private fun nextPage() { sendEvent(OnboardingEffect.NextPage) } /** * 标记引导完成 */ private fun markOnboardingCompleted() { viewModelScope.launch { try { if (state.value.isProcessing) return@launch updateState { copy(isLoading = false, isProcessing = true) } categoryRepository.initializeDefaultCategories() onboardingRepository.markLaunched() sendEvent(OnboardingEffect.NavMain) } finally { updateState { copy(isLoading = false, isProcessing = false) } } } } }