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
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)
) {

View file

@ -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"

View file

@ -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 =

View file

@ -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 {} },
{},
{}
{},
{},
)
)
}

View file

@ -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)
}