46 lines
1.4 KiB
Kotlin
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))
|
|
}
|
|
}
|
|
}
|
|
|
|
} |