2025-01-12 21:42:08 +08:00

46 lines
1.4 KiB
Kotlin

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<AddState, AddEvent, AddEffect>() {
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))
}
}
}
}