fix selectedTask
This commit is contained in:
		
							parent
							
								
									0e4200057b
								
							
						
					
					
						commit
						e333a0f626
					
				
					 3 changed files with 37 additions and 19 deletions
				
			
		|  | @ -28,7 +28,7 @@ import be.ugent.sel.studeez.screens.subjects.SubjectRoute | |||
| import be.ugent.sel.studeez.screens.tasks.TaskRoute | ||||
| import be.ugent.sel.studeez.screens.subjects.form.SubjectCreateRoute | ||||
| import be.ugent.sel.studeez.screens.subjects.form.SubjectEditRoute | ||||
| import be.ugent.sel.studeez.screens.tasks.form.TaskAddRoute | ||||
| import be.ugent.sel.studeez.screens.tasks.form.TaskCreateRoute | ||||
| import be.ugent.sel.studeez.screens.tasks.form.TaskEditRoute | ||||
| import be.ugent.sel.studeez.screens.timer_form.TimerAddRoute | ||||
| import be.ugent.sel.studeez.screens.timer_form.TimerEditRoute | ||||
|  | @ -105,7 +105,7 @@ fun StudeezNavGraph( | |||
|         } | ||||
| 
 | ||||
|         composable(StudeezDestinations.ADD_TASK_FORM) { | ||||
|             TaskAddRoute( | ||||
|             TaskCreateRoute( | ||||
|                 goBack = goBack, | ||||
|                 openAndPopUp = openAndPopUp, | ||||
|                 viewModel = hiltViewModel(), | ||||
|  |  | |||
|  | @ -18,10 +18,10 @@ import be.ugent.sel.studeez.resources | |||
| import be.ugent.sel.studeez.R.string as AppText | ||||
| 
 | ||||
| @Composable | ||||
| fun TaskAddRoute( | ||||
| fun TaskCreateRoute( | ||||
|     goBack: () -> Unit, | ||||
|     openAndPopUp: (String, String) -> Unit, | ||||
|     viewModel: TaskFormViewModel, | ||||
|     viewModel: TaskCreateFormViewModel, | ||||
| ) { | ||||
|     val uiState by viewModel.uiState | ||||
|     TaskForm( | ||||
|  | @ -37,7 +37,7 @@ fun TaskAddRoute( | |||
| fun TaskEditRoute( | ||||
|     goBack: () -> Unit, | ||||
|     openAndPopUp: (String, String) -> Unit, | ||||
|     viewModel: TaskFormViewModel, | ||||
|     viewModel: TaskEditFormViewModel, | ||||
| ) { | ||||
|     val uiState by viewModel.uiState | ||||
|     TaskForm( | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| package be.ugent.sel.studeez.screens.tasks.form | ||||
| 
 | ||||
| import androidx.compose.runtime.MutableState | ||||
| import androidx.compose.runtime.mutableStateOf | ||||
| import be.ugent.sel.studeez.data.SelectedSubject | ||||
| import be.ugent.sel.studeez.data.SelectedTask | ||||
|  | @ -12,37 +13,54 @@ import dagger.hilt.android.lifecycle.HiltViewModel | |||
| import javax.inject.Inject | ||||
| 
 | ||||
| abstract class TaskFormViewModel( | ||||
|     private val taskDAO: TaskDAO, | ||||
|     private val selectedSubject: SelectedSubject, | ||||
|     private val selectedTask: SelectedTask, | ||||
|     protected val taskDAO: TaskDAO, | ||||
|     protected val selectedSubject: SelectedSubject, | ||||
|     protected val selectedTask: SelectedTask, | ||||
|     logService: LogService, | ||||
| ) : StudeezViewModel(logService) { | ||||
|     var uiState = mutableStateOf( | ||||
|         if (selectedTask.isSet()) TaskFormUiState(selectedTask().name) else TaskFormUiState() | ||||
|     ) | ||||
|         private set | ||||
|     abstract val uiState: MutableState<TaskFormUiState> | ||||
| 
 | ||||
|     private val name: String | ||||
|     protected val name: String | ||||
|         get() = uiState.value.name | ||||
| 
 | ||||
|     fun onNameChange(newValue: String) { | ||||
|         uiState.value = uiState.value.copy(name = newValue) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|     fun onDelete(openAndPopUp: (String, String) -> Unit) { | ||||
|         taskDAO.deleteTask(selectedTask()) | ||||
|         openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.EDIT_TASK_FORM) | ||||
|     } | ||||
| @HiltViewModel | ||||
| class TaskCreateFormViewModel @Inject constructor( | ||||
|     taskDAO: TaskDAO, | ||||
|     selectedSubject: SelectedSubject, | ||||
|     selectedTask: SelectedTask, | ||||
|     logService: LogService, | ||||
| ) : TaskFormViewModel(taskDAO, selectedSubject, selectedTask, logService) { | ||||
|     override val uiState = mutableStateOf(TaskFormUiState()) | ||||
| 
 | ||||
|     fun onCreate(openAndPopUp: (String, String) -> Unit) { | ||||
|         val newTask = Task(name = name, subjectId = selectedSubject().id) | ||||
|         taskDAO.saveTask(newTask) | ||||
|         openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.ADD_TASK_FORM) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @HiltViewModel | ||||
| class TaskEditFormViewModel @Inject constructor( | ||||
|     taskDAO: TaskDAO, | ||||
|     selectedSubject: SelectedSubject, | ||||
|     selectedTask: SelectedTask, | ||||
|     logService: LogService, | ||||
| ) : TaskFormViewModel(taskDAO, selectedSubject, selectedTask, logService) { | ||||
|     override val uiState = mutableStateOf(TaskFormUiState()) | ||||
| 
 | ||||
|     fun onDelete(openAndPopUp: (String, String) -> Unit) { | ||||
|         taskDAO.deleteTask(selectedTask()) | ||||
|         openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.EDIT_TASK_FORM) | ||||
|     } | ||||
| 
 | ||||
|     fun onEdit(openAndPopUp: (String, String) -> Unit) { | ||||
|         val newTask = Task(name = name) | ||||
|         val newTask = selectedTask().copy(name = name) | ||||
|         taskDAO.updateTask(newTask) | ||||
|         openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.EDIT_TASK_FORM) | ||||
|     } | ||||
| } | ||||
| } | ||||
|  |  | |||
		Reference in a new issue
	
	 brreynie
						brreynie