A safer method of manage tasks

This commit is contained in:
Super12138 2024-03-06 21:11:16 +08:00
parent d43e599f74
commit 8742836ec9
2 changed files with 35 additions and 23 deletions

View file

@ -48,10 +48,8 @@ class ToDoAdapter(val todoList: MutableList<ToDo>, val viewModelStoreOwner: View
notifyItemRemoved(position)
notifyItemRangeChanged(position, todoList.size)
GlobalScope.launch {
Repository.updateStateByUUID(todo.uuid)
progressViewModel.updateProgress()
}
todoViewModel.updateTask(todo.uuid)
progressViewModel.updateProgress()
// 设置空项目提示可见性
if (todoList.isEmpty()) {
@ -72,12 +70,9 @@ class ToDoAdapter(val todoList: MutableList<ToDo>, val viewModelStoreOwner: View
notifyItemRemoved(position)
notifyItemRangeChanged(position, todoList.size)
GlobalScope.launch {
Repository.deleteByUUID(todo.uuid)
progressViewModel.updateProgress()
}
todoViewModel.deleteTask(todo.uuid)
progressViewModel.updateProgress()
// 设置空项目提示可见性
if (todoList.isEmpty()) {
todoViewModel.emptyTipVis.value = View.VISIBLE
@ -90,21 +85,19 @@ class ToDoAdapter(val todoList: MutableList<ToDo>, val viewModelStoreOwner: View
if (todoList.size + 1 > 0) {
todoViewModel.emptyTipVis.value = View.GONE
}
todoList.add(ToDo(todo.uuid,0 , todo.content, todo.subject))
todoList.add(ToDo(todo.uuid, 0, todo.content, todo.subject))
todoViewModel.refreshData.value = 1
GlobalScope.launch {
Repository.insert(
ToDoRoom(
todo.uuid,
0,
todo.subject,
todo.content
)
todoViewModel.insertTask(
ToDoRoom(
todo.uuid,
0,
todo.subject,
todo.content
)
progressViewModel.updateProgress()
}
)
progressViewModel.updateProgress()
}
.show()
}

View file

@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import cn.super12138.todo.logic.Repository
import cn.super12138.todo.logic.dao.ToDoRoom
import cn.super12138.todo.logic.model.ToDo
import kotlinx.coroutines.launch
@ -14,10 +15,10 @@ class ToDoFragmentViewModel : ViewModel() {
val todoList = ArrayList<ToDo>()
init {
loadToDos()
loadTasks()
}
private fun loadToDos() {
private fun loadTasks() {
viewModelScope.launch {
val todos = Repository.getAllIncomplete()
var count = 0
@ -32,4 +33,22 @@ class ToDoFragmentViewModel : ViewModel() {
}
}
}
fun deleteTask(uuid: String) {
viewModelScope.launch {
Repository.deleteByUUID(uuid)
}
}
fun insertTask(todo: ToDoRoom) {
viewModelScope.launch {
Repository.insert(todo)
}
}
fun updateTask(uuid: String) {
viewModelScope.launch {
Repository.updateStateByUUID(uuid)
}
}
}