package com.taskttl.ui.viewmodel import com.taskttl.data.contract.AddEffect import com.taskttl.data.contract.AddEvent import com.taskttl.data.contract.AddState import com.taskttl.data.repository.TaskRepository import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject /** * @author Hsy * @date 2024/09/06 * @constructor 创建[AddViewModel] */ @HiltViewModel class AddViewModel @Inject constructor( private val taskRepository: TaskRepository ) : BaseViewModel() { override fun initialState(): AddState = AddState(); override suspend fun handleEvent(event: AddEvent, state: AddState): AddState { return when (event) { is AddEvent.AddTask -> { val id = taskRepository.addTask(event.item) if (id > 0) { sendEffect(AddEffect.AddSuccess("任务添加成功")) } state.copy(isLoading = false) } is AddEvent.LoadTask -> { val task = taskRepository.getTaskById(event.id) state.copy(taskEntity = task) } is AddEvent.UpdateTitle -> { state.copy(taskEntity = state.taskEntity.copy(title = event.title)) } is AddEvent.UpdateContent -> { state.copy(taskEntity = state.taskEntity.copy(content = event.content)) } } } }