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
	
	 brreynie
						brreynie