archive tasks
This commit is contained in:
parent
5f8b7d7a7b
commit
e35f143854
5 changed files with 27 additions and 22 deletions
|
@ -1,17 +1,7 @@
|
|||
package be.ugent.sel.studeez.common.composable.tasks
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.Card
|
||||
import androidx.compose.material.Checkbox
|
||||
import androidx.compose.material.CheckboxDefaults
|
||||
import androidx.compose.material.Icon
|
||||
import androidx.compose.material.IconButton
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Delete
|
||||
import androidx.compose.runtime.Composable
|
||||
|
@ -31,7 +21,7 @@ import be.ugent.sel.studeez.resources
|
|||
fun TaskEntry(
|
||||
task: Task,
|
||||
onCheckTask: (Boolean) -> Unit,
|
||||
onDeleteTask: () -> Unit,
|
||||
onArchiveTask: () -> Unit,
|
||||
onStartTask: () -> Unit
|
||||
) {
|
||||
Card(
|
||||
|
@ -81,7 +71,7 @@ fun TaskEntry(
|
|||
Box(modifier = Modifier.weight(7f)) {
|
||||
if (task.completed) {
|
||||
IconButton(
|
||||
onClick = onDeleteTask,
|
||||
onClick = onArchiveTask,
|
||||
modifier = Modifier
|
||||
.padding(start = 20.dp)
|
||||
) {
|
||||
|
|
|
@ -8,8 +8,12 @@ data class Task(
|
|||
val completed: Boolean = false,
|
||||
val time: Int = 0,
|
||||
val subjectId: String = "",
|
||||
val archived: Boolean = false,
|
||||
)
|
||||
var archived: Boolean = false,
|
||||
) {
|
||||
fun archive() {
|
||||
this.archived = true
|
||||
}
|
||||
}
|
||||
|
||||
object TaskDocument {
|
||||
const val id = "id"
|
||||
|
|
|
@ -32,6 +32,7 @@ class FireBaseTaskDAO @Inject constructor(
|
|||
|
||||
override suspend fun getTaskCount(subject: Subject): Int {
|
||||
return selectedSubjectTasksCollection(subject.id)
|
||||
.whereEqualTo(TaskDocument.archived, false)
|
||||
.count()
|
||||
.get(AggregateSource.SERVER)
|
||||
.await()
|
||||
|
@ -53,7 +54,7 @@ class FireBaseTaskDAO @Inject constructor(
|
|||
}
|
||||
|
||||
override fun updateTask(newTask: Task) {
|
||||
selectedSubjectTasksCollection(newTask.id).document(newTask.id).set(newTask)
|
||||
selectedSubjectTasksCollection(newTask.subjectId).document(newTask.id).set(newTask)
|
||||
}
|
||||
|
||||
override fun deleteTask(oldTask: Task) {
|
||||
|
@ -63,7 +64,8 @@ class FireBaseTaskDAO @Inject constructor(
|
|||
override fun toggleTaskCompleted(task: Task, completed: Boolean) {
|
||||
selectedSubjectTasksCollection(task.subjectId)
|
||||
.document(task.id)
|
||||
.update(TaskDocument.completed, completed)
|
||||
// .update(TaskDocument.completed, completed)
|
||||
.set(task.copy(completed = completed))
|
||||
}
|
||||
|
||||
private fun selectedSubjectTasksCollection(subjectId: String): CollectionReference =
|
||||
|
|
|
@ -30,7 +30,8 @@ data class TaskActions(
|
|||
val deleteTask: (Task) -> Unit,
|
||||
val onCheckTask: (Task, Boolean) -> Unit,
|
||||
val editSubject: () -> Unit,
|
||||
val startTask: (Task) -> Unit
|
||||
val startTask: (Task) -> Unit,
|
||||
val archiveTask: (Task) -> Unit,
|
||||
)
|
||||
|
||||
fun getTaskActions(viewModel: TaskViewModel, open: (String) -> Unit): TaskActions {
|
||||
|
@ -41,7 +42,8 @@ fun getTaskActions(viewModel: TaskViewModel, open: (String) -> Unit): TaskAction
|
|||
deleteTask = viewModel::deleteTask,
|
||||
onCheckTask = { task, isChecked -> viewModel.toggleTaskCompleted(task, isChecked) },
|
||||
editSubject = { viewModel.editSubject(open) },
|
||||
startTask = { task -> viewModel.startTask(task, open) }
|
||||
startTask = { task -> viewModel.startTask(task, open) },
|
||||
archiveTask = viewModel::archiveTask
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -76,7 +78,7 @@ fun TaskScreen(
|
|||
TaskEntry(
|
||||
task = it,
|
||||
onCheckTask = { isChecked -> taskActions.onCheckTask(it, isChecked) },
|
||||
onDeleteTask = { taskActions.deleteTask(it) },
|
||||
onArchiveTask = { taskActions.archiveTask(it) },
|
||||
onStartTask = { taskActions.startTask(it) }
|
||||
)
|
||||
}
|
||||
|
@ -111,7 +113,8 @@ fun TaskScreenPreview() {
|
|||
{},
|
||||
{ _, _ -> run {} },
|
||||
{},
|
||||
{}
|
||||
{},
|
||||
{},
|
||||
)
|
||||
)
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package be.ugent.sel.studeez.screens.tasks
|
||||
|
||||
import android.util.Log
|
||||
import be.ugent.sel.studeez.data.SelectedSubject
|
||||
import be.ugent.sel.studeez.data.SelectedTask
|
||||
import be.ugent.sel.studeez.data.local.models.task.Subject
|
||||
|
@ -42,6 +43,11 @@ class TaskViewModel @Inject constructor(
|
|||
taskDAO.deleteTask(task)
|
||||
}
|
||||
|
||||
fun archiveTask(task: Task) {
|
||||
task.archive()
|
||||
taskDAO.updateTask(task)
|
||||
}
|
||||
|
||||
fun toggleTaskCompleted(task: Task, completed: Boolean) {
|
||||
taskDAO.toggleTaskCompleted(task, completed)
|
||||
}
|
||||
|
|
Reference in a new issue