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