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 | 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) | ||||||
|                     ) { |                     ) { | ||||||
|  |  | ||||||
|  | @ -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" | ||||||
|  |  | ||||||
|  | @ -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 = | ||||||
|  |  | ||||||
|  | @ -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 {} }, | ||||||
|             {}, |             {}, | ||||||
|             {} |             {}, | ||||||
|  |             {}, | ||||||
|         ) |         ) | ||||||
|     ) |     ) | ||||||
| } | } | ||||||
|  | @ -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) | ||||||
|     } |     } | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 brreynie
						brreynie