From 8742836ec95bfc199879dacc20d0121faa45507f Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Wed, 6 Mar 2024 21:11:16 +0800 Subject: [PATCH] A safer method of manage tasks --- .../super12138/todo/views/todo/ToDoAdapter.kt | 35 ++++++++----------- .../todo/views/todo/ToDoFragmentViewModel.kt | 23 ++++++++++-- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt b/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt index 3eec8a9..e5b4fd6 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt @@ -48,10 +48,8 @@ class ToDoAdapter(val todoList: MutableList, 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, 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, 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() } diff --git a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoFragmentViewModel.kt b/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoFragmentViewModel.kt index be21703..f365c94 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoFragmentViewModel.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoFragmentViewModel.kt @@ -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() 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) + } + } } \ No newline at end of file