archive tasks

This commit is contained in:
brreynie 2023-05-09 16:00:15 +02:00
parent 5f8b7d7a7b
commit e35f143854
5 changed files with 27 additions and 22 deletions

View file

@ -1,17 +1,7 @@
package be.ugent.sel.studeez.common.composable.tasks package be.ugent.sel.studeez.common.composable.tasks
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Box import androidx.compose.material.*
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.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Delete
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -31,7 +21,7 @@ import be.ugent.sel.studeez.resources
fun TaskEntry( fun TaskEntry(
task: Task, task: Task,
onCheckTask: (Boolean) -> Unit, onCheckTask: (Boolean) -> Unit,
onDeleteTask: () -> Unit, onArchiveTask: () -> Unit,
onStartTask: () -> Unit onStartTask: () -> Unit
) { ) {
Card( Card(
@ -81,7 +71,7 @@ fun TaskEntry(
Box(modifier = Modifier.weight(7f)) { Box(modifier = Modifier.weight(7f)) {
if (task.completed) { if (task.completed) {
IconButton( IconButton(
onClick = onDeleteTask, onClick = onArchiveTask,
modifier = Modifier modifier = Modifier
.padding(start = 20.dp) .padding(start = 20.dp)
) { ) {

View file

@ -8,8 +8,12 @@ data class Task(
val completed: Boolean = false, val completed: Boolean = false,
val time: Int = 0, val time: Int = 0,
val subjectId: String = "", val subjectId: String = "",
val archived: Boolean = false, var archived: Boolean = false,
) ) {
fun archive() {
this.archived = true
}
}
object TaskDocument { object TaskDocument {
const val id = "id" const val id = "id"

View file

@ -32,6 +32,7 @@ class FireBaseTaskDAO @Inject constructor(
override suspend fun getTaskCount(subject: Subject): Int { override suspend fun getTaskCount(subject: Subject): Int {
return selectedSubjectTasksCollection(subject.id) return selectedSubjectTasksCollection(subject.id)
.whereEqualTo(TaskDocument.archived, false)
.count() .count()
.get(AggregateSource.SERVER) .get(AggregateSource.SERVER)
.await() .await()
@ -53,7 +54,7 @@ class FireBaseTaskDAO @Inject constructor(
} }
override fun updateTask(newTask: Task) { 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) { override fun deleteTask(oldTask: Task) {
@ -63,7 +64,8 @@ class FireBaseTaskDAO @Inject constructor(
override fun toggleTaskCompleted(task: Task, completed: Boolean) { override fun toggleTaskCompleted(task: Task, completed: Boolean) {
selectedSubjectTasksCollection(task.subjectId) selectedSubjectTasksCollection(task.subjectId)
.document(task.id) .document(task.id)
.update(TaskDocument.completed, completed) // .update(TaskDocument.completed, completed)
.set(task.copy(completed = completed))
} }
private fun selectedSubjectTasksCollection(subjectId: String): CollectionReference = private fun selectedSubjectTasksCollection(subjectId: String): CollectionReference =

View file

@ -30,7 +30,8 @@ data class TaskActions(
val deleteTask: (Task) -> Unit, val deleteTask: (Task) -> Unit,
val onCheckTask: (Task, Boolean) -> Unit, val onCheckTask: (Task, Boolean) -> Unit,
val editSubject: () -> Unit, val editSubject: () -> Unit,
val startTask: (Task) -> Unit val startTask: (Task) -> Unit,
val archiveTask: (Task) -> Unit,
) )
fun getTaskActions(viewModel: TaskViewModel, open: (String) -> Unit): TaskActions { fun getTaskActions(viewModel: TaskViewModel, open: (String) -> Unit): TaskActions {
@ -41,7 +42,8 @@ fun getTaskActions(viewModel: TaskViewModel, open: (String) -> Unit): TaskAction
deleteTask = viewModel::deleteTask, deleteTask = viewModel::deleteTask,
onCheckTask = { task, isChecked -> viewModel.toggleTaskCompleted(task, isChecked) }, onCheckTask = { task, isChecked -> viewModel.toggleTaskCompleted(task, isChecked) },
editSubject = { viewModel.editSubject(open) }, 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( TaskEntry(
task = it, task = it,
onCheckTask = { isChecked -> taskActions.onCheckTask(it, isChecked) }, onCheckTask = { isChecked -> taskActions.onCheckTask(it, isChecked) },
onDeleteTask = { taskActions.deleteTask(it) }, onArchiveTask = { taskActions.archiveTask(it) },
onStartTask = { taskActions.startTask(it) } onStartTask = { taskActions.startTask(it) }
) )
} }
@ -111,7 +113,8 @@ fun TaskScreenPreview() {
{}, {},
{ _, _ -> run {} }, { _, _ -> run {} },
{}, {},
{} {},
{},
) )
) )
} }

View file

@ -1,5 +1,6 @@
package be.ugent.sel.studeez.screens.tasks package be.ugent.sel.studeez.screens.tasks
import android.util.Log
import be.ugent.sel.studeez.data.SelectedSubject import be.ugent.sel.studeez.data.SelectedSubject
import be.ugent.sel.studeez.data.SelectedTask import be.ugent.sel.studeez.data.SelectedTask
import be.ugent.sel.studeez.data.local.models.task.Subject import be.ugent.sel.studeez.data.local.models.task.Subject
@ -42,6 +43,11 @@ class TaskViewModel @Inject constructor(
taskDAO.deleteTask(task) taskDAO.deleteTask(task)
} }
fun archiveTask(task: Task) {
task.archive()
taskDAO.updateTask(task)
}
fun toggleTaskCompleted(task: Task, completed: Boolean) { fun toggleTaskCompleted(task: Task, completed: Boolean) {
taskDAO.toggleTaskCompleted(task, completed) taskDAO.toggleTaskCompleted(task, completed)
} }